Presto 可以隐式地将数字和字符值转换为适当的数据类型,前提是这种转换是可行的。然而,Presto 不会在字符类型和数字类型间隐式转换。例如,一个期望获得 varchar 类型结果的查询不会自动将 bigint 类型的值转换为对应的 varchar 类型。

如果有需要,值可以通过显式转换来变换为特定的数据类型。

转换函数

cast(value AS type) → type

可以通过显式转换将一个值变换为特定的数据类型。这可以用于将 varchar 类型的值转换为数字类型,反之也可以。

try_cast(value AS type) → type

与 cast() 函数相似,不同之处在于如果转换失败,它会返回 null 值。

数据大小

parse_presto_data_size(string)

可以将格式为 value unit 的字符串解析为一个数字,其中:

value 为小数,表示 unit 值的数值部分;

unit 为数据大小的单位,如B、KB、MB、GB等。

parse_presto_data_size 函数支持以下数据大小单位:

单位 描述
B Bytes 1
kB Kilobytes 1024
MB Megabytes 1024^2
GB Gigabytes 1024^3
TB Terabytes 1024^4
PB Petabytes 10245^
EB Exabytes 1024^6
ZB Zettabytes 1024^7
YB Yottabytes 1024^8

示例

1
2
3
4
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

根据提供的表达式,推断并返回表达式中的数据类型名称:

1
2
3
SELECT typeof(123); -- integer
SELECT typeof('cat'); -- varchar(3)
SELECT typeof(cos(2) + 1.5); -- double

(END)