1 where 1=1
不懂就问:SQL 语句中 where 条件后 写上1=1 是什么意思_Python数据之道的博客-CSDN博客
【SQL面试】WHERE 1=1 到底是啥意思?_where1=1_鲸鲸说数据的博客-CSDN博客
2 contains((select flag from table),val)
hivesql -- array_contains()函数使用_array_contains hive_扫地增的博客-CSDN博客
3 coalesce
select coalesce(a,b,c);
选取a、b、c中非空的那个,依次选择;
如果a==null,则选择b;如果b==null,则选择c;如果a!=null,则选择a;如果a b c 都为null ,则返回为null。
4 upper
select upper('App') #结果是:APP
select lower('App') #结果是:app
5 string和varchar
hive的string和varchar的区别
- VARCHAR与STRING类似,但是STRING存储变长的文本,对长度没有限制;varchar长度上只允许在1-65355之间。
- 还没有通用的UDF可以直接用于VARCHAR类型,可以使用String UDF代替,VARCHAR将会转换为String再传递给UDF。
presto和hive时间格式转换_presto 毫秒_思念在延续的博客-CSDN博客
presto 与 hive的时间转换对比 - 知乎 (zhihu.com)
Presto hive 时间相关函数使用笔记 - 知乎 (zhihu.com)
6 decimal
decimal类型的数据存储形式是,将每9位十进制数存储为4个字节
1)decimal(5,2),小数部分为2,对应1个字节,整数部分为3,对应2个字节;
2)decimal(20,6),小数部分为6,对应3个字节,整数部分为14,对应9+5即4+3=7个字节
结论:decimal型比浮点型计算精度高,且使用更少的空间。通常在设置小数时,用的decimal类型。
转hive过程中如遇到一列包含多个decimal类型,取分配内存较大的decimal类型;
如:case when ... then value1 when ... then value2 else end
hive字段类型:value1是decimal(23,2),value2是decimal(30,2),则转hive字段类型是decimal(30,2)