更新时间:2024-07-24 GMT+08:00

转换函数

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

    与cast()相似,区别是转换失败返回null。

    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