ClickHouce 常用数据类型转换函数

目录

1、toInt(8|16|32|64)

2、toFloat(|32|64)

3、toDecimal(32|64|128)

4、toString

5、parseDateTimeBestEffort

6、CAST(x, T)


1、toInt(8|16|32|64)

说明:转换一个输入值为Int类型。
这个函数包括:
toInt8(expr)   — 结果为Int8数据类型。
toInt16(expr) — 结果为Int16数据类型。
toInt32(expr) — 结果为Int32数据类型。
toInt64(expr) — 结果为Int64数据类型。

参数 :expr — 表达式返回一个数字或者代表数值类型的字符串。

不支持二进制、八进制、十六进制的数字形式,有效数字之前的0也会被忽略。

返回值:整形在Int8, Int16, Int32,或者 Int64 的数据类型。

函数使用rounding towards zero原则,这意味着会截断丢弃小数部分的数值。

注:NaN and Inf转换是不确定的。

例子:

select toInt64(nan), toInt64(Inf),toInt32(32), toInt16('16'), toInt8(8.8);

扩展:

☛ toInt(8|16|32|64)OrZero :需要一个字符类型的入参,然后尝试把它转为Int (8 | 16 | 32 | 64),如果转换失败直接返回0。
☛ toInt(8|16|32|64)OrNull :需要一个字符类型的入参,然后尝试把它转为Int (8 | 16 | 32 | 64),如果转换失败直接返回NULL。

 

2、toFloat(|32|64)

说明:转换一个输入值为Float类型。
这个函数包括:
toFloat32(expr) — 结果为Float32数据类型。
toFloat64(expr) — 结果为Float64数据类型。

例子:

select toFloat32('89.12'),toFloat64('98.0912');

扩展:
☛ toFloat(32|64)OrZero :需要一个字符类型的入参,然后尝试把它转为Float (32 | 64),如果转换失败直接返回0。
☛ toFloat(32|64)OrNull  :需要一个字符类型的入参,然后尝试把它转为Float ( 32 | 64),如果转换失败直接返回NULL。

 

 

3、toDecimal(32|64|128)

说明:转换 value 到Decimal类型的值,其中精度为S。value可以是一个数字或者一个字符串。S 指定小数位的精度。
这个函数包括:
toDecimal32(value, S)
toDecimal64(value, S)
toDecimal128(value, S)

例子:

select toDecimal32('89.12',2),toDecimal64('98.0912',5),toDecimal128('98.0912',6);

扩展:

☛ toDecimal(32|64|128)OrNull:转换一个输入的字符到 Nullable(Decimal(P,S))类型的数据。
如果在解析输入值发生错误的时候你希望得到一个NULL值而不是抛出异常,可以使用该函数。

☛ toDecimal(32|64|128)OrZero:转换输入值为Decimal(P,S)类型数据。
当解析错误的时候,你不需要抛出异常而希望得到0值,可以使用该函数。

 

 

4、toString

说明:函数用于在数字、字符串(不包含FixedString)、Date以及DateTime之间互相转换。

select now(),toString(today()),toString(now());

 

5、parseDateTimeBestEffort

说明:把String类型的时间日期转换为DateTime数据类型。

语法: parseDateTimeBestEffort(time_string [, time_zone]);

参数 :
time_string — 字符类型的时间和日期。
time_zone — 字符类型的时区。
    非标准格式的支持
☛ 9位或者10位的数字时间,unix timestamp.
☛ 时间和日期组成的字符串: YYYYMMDDhhmmss, DD/MM/YYYY hh:mm:ss, DD-MM-YY hh:mm, YYYY-MM-DD hh:mm:ss等。
☛ 日期的字符串: YYYY, YYYYMM, YYYY*MM, DD/MM/YYYY, DD-MM-YY 等。
☛ 只有天和时间: DD, DD hh, DD hh:mm。这种情况下 YYYY-MM 默认为 2000-01。
☛ 包含时间日期以及时区信息: YYYY-MM-DD hh:mm:ss ±h:mm等。例如: 2021-12-12 17:36:00 -5:00。

返回值:DateTime类型数据。

例子:

select
 parseDateTimeBestEffort('12 20:19')            as data_0
,parseDateTimeBestEffort('8912211011')          as data_1
,parseDateTimeBestEffort('12/13/2021 12:12:21') as data_2
,parseDateTimeBestEffort('20211212 11:12:12') as data_3
,parseDateTimeBestEffort('Sat, 12 Aug 2021 11:22:22 GMT', 'Europe/Moscow') as data_4

扩展:

☛ parseDateTimeBestEffortOrNull 函数和parseDateTimeBestEffort基本一致,除了无法解析返回结果为NULL。

☛ parseDateTimeBestEffortOrZero 函数和parseDateTimeBestEffort基本一致,除了无法解析返回结果为0。

 

6、CAST(x, T)

说明:将’x’转换为’t’数据类型。还支持语法CAST(x as t)

例子:

select
    '2021-12-21 21:12:13'               as timestamp
    ,CAST(timestamp as DateTime)        as datetime
    ,CAST(timestamp as Date)            as date
    ,CAST(timestamp, 'String')          as string
    ,CAST(timestamp, 'FixedString(22)') as fixed_string;

注:将参数转换为FixedString(N),仅适用于String或FixedString(N)类型的参数。

 

参考:https://clickhouse.tech/docs/en/sql-reference/functions/type-conversion-functions/

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值