转换函数
cast转换函数
HetuEngine会将数字和字符值隐式转换成正确的类型。HetuEngine不会把字符和数字类型相互转换。例如,一个查询期望得到一个varchar类型的值,HetuEngine不会自动将bigint类型的值转换为varchar类型。
如果有必要,可以将值显式转换为指定类型。
- cast(value AS type) → type
显式转换一个值的类型。可以将varchar类型的值转为数字类型,反过来转换也可以。
select cast('186' as int ); select cast(186 as varchar);
- try_cast(value AS type) → type
select try_cast(1860 as tinyint); _col0 ------- NULL (1 row)
当出现数字溢出,null值转换等情况,会返回NULL,但无法转换的情况,还是会报错。
例如:select try_cast(186 as date);
Cannot cast integer to date
Format
- format(format, args...) → varchar
描述:对一个字符串,按照格式字符串指定的方式进行格式化,并返回。
SELECT format('%s%%',123);-- '123%' SELECT format('%.5f',pi());-- '3.14159' SELECT format('%03d',8);-- '008' SELECT format('%,.2f',1234567.89);-- '1,234,567.89' SELECT format('%-7s,%7s','hello','world');-- 'hello , world' SELECT format('%2$s %3$s %1$s','a','b','c');-- 'b c a' SELECT format('%1$tA, %1$tB %1$te, %1$tY',date'2006-07-04');-- 'Tuesday, July 4, 2006
- format_number(number) → varchar
SELECT format_number(123456); -- '123K' SELECT format_number(1000000); -- '1M'
Data Size
parse_presto_data_size函数支持以下单位:
单位 |
描述 |
值 |
---|---|---|
B |
Bytes |
1 |
kB |
Kilobytes |
1024 |
MB |
Megabytes |
10242 |
GB |
Gigabytes |
10243 |
TB |
Terabytes |
10244 |
PB |
Petabytes |
10245 |
EB |
Exabytes |
10246 |
ZB |
Zettabytes |
10247 |
YB |
Yottabytes |
10248 |
parse_presto_data_size(string) → decimal(38)
将带单位的格式化的值转为数字,值可以是小数,如下所示:
SELECT parse_presto_data_size('1B'); -- 1 SELECT parse_presto_data_size('1kB'); -- 1024 SELECT parse_presto_data_size('1MB'); -- 1048576 SELECT parse_presto_data_size('2.3MB'); -- 2411724
其他
typeof(expr) → varchar
返回表达式的数据类型名称。
SELECT typeof(123);-- integer SELECT typeof('cat');-- varchar(3) SELECT typeof(cos(2)+1.5);-- double