这篇说说类型转换函数的基本语法及示例。
| 函数名称 | 语法 | 说明 |
| cast 函数 | cast(x as type) | 转换 x 的数据类型。使用 cast 函数转换数据类型时,如果某个值转换失败,将终止整个查询与分析操作。 |
| try_cast 函数 | try_cast(x as type) | 转换 x 的数据类型。使用 try_cast 函数转换数据类型时,如果某个值转换失败,该值返回 NULL,并跳过该值继续处理。 |
| typeof 函数 | typeof(x) | 返回 x 的数据类型。 |
注意:说明:
注意:日志中可能有脏数据时,建议使用 try_cast 函数,避免因脏数据造成整个查询与分析操作失败。
一、cast 函数
cast 函数用于转换 x 的数据类型。使用 cast 函数转换数据类型时,如果某个值转换失败,将终止整个查询与分析操作。
二、语法
cast(x as type)
三、参数说明
| 参数 | 说明 |
| x | 参数值可以为任意类型。 |
| type | SQL 数据类型,可选值为 bigint、varchar、double、boolean、timestamp、decimal、array 或 map。索引数据类型和 SQL 数据类型的映射关系,请参见 附录:数据类型映射关系。 |
注意:说明:
四、返回值类型
由你配置的 type 参数决定。
五、示例
1. 将数值0.01转换为 bigint 格式。
* | select cast(0.01 as bigint)
2. 将日志服务附带的日志采集时间__TIMESTAMP__转换为 TIMESTAMP 类型。
* | select cast(__TIMESTAMP__ as timestamp)
六、try_cast 函数
try_cast 函数用于转换x的数据类型。使用 try_cast 函数转换数据类型时,如果某个值转换失败,该值返回 NULL,并跳过该值继续处理。
七、语法
try_cast(x as type)
八、参数说明
| 参数 | 说明 |
| x | 参数值可以为任意类型。 |
| type | SQL 数据类型,可选值为 bigint、varchar、double、boolean、timestamp、decimal、array 或 map。索引数据类型和 SQL 数据类型的映射关系,请参见 附录:数据类型映射关系。 |
九、返回值类型
由你配置的 type 参数决定。
十、示例
将 remote_user 字段值转换为 varchar 格式。
* | select try_cast(remote_user as varchar)
十一、附录:数据类型映射关系
索引数据类型和 SQL 数据类型的对应关系如下表所示:
| 索引的数据类型 | SQL 的数据类型 |
| long | bigint |
| text | varchar |
| double | double |
| json | varchar |