【发布时间】:2021-09-09 03:17:20
【问题描述】:
如果将字符串值转换为int失败,clickhouse会抛出异常,如何在转换失败时返回null而不是抛出异常?谢谢。
SELECT CAST('a' AS Int32)
【问题讨论】:
标签: clickhouse
如果将字符串值转换为int失败,clickhouse会抛出异常,如何在转换失败时返回null而不是抛出异常?谢谢。
SELECT CAST('a' AS Int32)
【问题讨论】:
标签: clickhouse
ClickHouse 提供了一套函数来解决它:
SELECT
toInt32OrNull('a'),
accurateCastOrNull('b', 'Int32')
/*
┌─toInt32OrNull('a')─┬─accurateCastOrNull('b', 'Int32')─┐
│ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │
└────────────────────┴──────────────────────────────────┘
*/
查看可用功能的完整列表:
SELECT name
FROM system.functions
WHERE name ILIKE '%ornull%'
ORDER BY name ASC
/*
┌─name────────────────────────────┐
│ accurateCastOrNull │
..
│ toUInt8OrNull │
│ toUUIDOrNull │
└─────────────────────────────────┘
*/
【讨论】: