clickhouse 数据类型转换

1. 数值/日期类转换

1.1 常规类型转换

1.2 -OrZero系列

 1.3 -OrNull系列

2. 字符串转换

3. 通用的转换函数CAST(x, t)

4. 时间相关转换

1. 数值/日期类转换

1.1 常规类型转换

大类细类描述
toInt(8|16|32|64)toInt8(expr)转换为有符号的整数,转换向零舍入(截断数字的小数位)。nan和inf未定义。
toInt16(expr)
toInt32(expr)
toInt64(expr)
toUInt(8|16|32|64)toUInt8(expr)转换为无符号的整数,转换向零舍入(截断数字的小数位)。nan和inf未定义。
如果传入参数为负数,转换将异常。
toUInt16(expr)
toUInt32(expr)
toUInt64(expr)

toFloat(32|64)

toFloat32(expr)转换为浮点数。
toFloat64(expr)
toDecimal(32|64|128)toDecimal32(value, S)将值转换为精度为S的Decimal数据类型。该值可以是数字或字符串。 S(比例)参数指定小数位数。
toDecimal64(value, S)
toDecimal128(value, S)
toDatetoDate(expr)标准的时间格式字符串。
toDateTimetoDateTime(expr)标准的时间格式字符串或Unix时间戳。

1.2  -OrZero系列

与常规的数据类型转换相比, -OrZero可以处理异常情况, 当转换失败时,则返回0。

注意:这里只能接收字符串的参数。
 

大类细类描述
toInt(8|16|32|64)OrZerotoInt8OrZero(expr)
toInt16OrZero(expr)
toInt32OrZero(expr)
toInt64OrZero(expr)
toUInt(8|16|32|64)OrZerotoUInt8OrZero(expr)
toUInt16OrZero(expr)
toUInt32OrZero(expr)
toUInt64OrZero(expr)

toFloat(32|64)OrZero

toFloat32OrZero(expr)
toFloat64OrZero(expr)
toDecimal(32|64|128)OrZerotoDecimal32OrZero(value, S)如下两种情况会导致转换异常:
1. 当不能将字符串转换为数字。
2. 能将字符串转换为数字, 但是精度超过S。
toDecimal64OrZero(value, S)
toDecimal128OrZero(value, S)
toDateOrZerotoDateOrZero(expr)日期转换异常不会返回0, 而是返回混乱的日期。
toDateTimeOrZerotoDateTimeOrZero(expr)

1.3  -OrNull系列

与常规的数据类型转换相比, -OrNull可以处理异常情况, 当转换失败时,则返回Nulll。

注意:这里只能接收字符串的参数。

大类细类描述
toInt(8|16|32|64)OrNulltoInt8OrNull(expr)
toInt16OrNull(expr)
toInt32OrNull(expr)
toInt64OrNull(expr)
toUInt(8|16|32|64)OrNulltoUInt8OrNull(expr)
toUInt16OrNull(expr)
toUInt32OrNull(expr)
toUInt64OrNull(expr)

toFloat(32|64)OrNull

toFloat32OrNull(expr)
toFloat64OrNull(expr)
toDecimal(32|64|128)OrNulltoDecimal32OrNull(value, S)如下两种情况会导致转换异常:
1. 当不能将字符串转换为数字。
2. 能将字符串转换为数字, 但是精度超过S。
toDecimal64OrNull(value, S)
toDecimal128OrNull(value, S)
toDateOrNulltoDateOrNull(expr)日期转换异常不会返回0, 而是返回混乱的日期。
toDateTimeOrNulltoDateTimeOrNull(expr)

2. 字符串转换

函数描述
toString

将数字、字符串(非固定长度字符串)、date和datetime数据类型转换为字符串。

当将日期转换为字符串时,可额外增加第二个参数,用于指定时区。

toFixedString(s, N)将String类型的参数转换为FixedString(N)类型(固定长度为N的字符串),N必须为常数。如果字符串的字节数少于N,则在字符串右侧填充空字符串。如果字符串字节数大于N,则会转换异常。
toStringCutToZero(s)接受String或Fixed参数,在字符串参数的第一个0字节处被截断,返回截断后的字符串。

3. 通用的转换函数CAST(x, t)

将"x"转换为"t"数据类型。 也可以写成: CAST(x as t) 。

可以将类型转换为Nullable 。

4. 时间相关转换

4.1 toInterval(Year|Quarter|Month|Week|Day|Hour|Minute|Second)

将数字类型转换为Interval数据类型。

1

toIntervalSecond(number)

2

toIntervalMinute(number)

3

toIntervalHour(number)

4

toIntervalDay(number)

5

toIntervalWeek(number)

6

toIntervalMonth(number)

7

toIntervalQuarter(number)

8

toIntervalYear(number)

4.2 日期解析

将数字类型参数解析为Date或DateTime类型。 与toDate和toDateTime不同,parseDateTimeBestEffort可以处理更复杂的日期格式。 

函数描述
parseDateTimeBestEffortparseDateTimeBestEffort(cc.start_timestamp,
    'America/Los_Angeles')
parseDateTimeBestEffortOrNull对于无法处理的格式,则返回Null。
parseDateTimeBestEffortOrZero对于无法处理的格式,则返回0。

select '20180831145618' as time, parseDateTimeBestEffort(time);

  • 7
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值