在 clickhouse 中,如何在转换失败时 return null 而不是抛出异常?

In clickhouse, how to return null instead of throw exception when casting failed?

如果将字符串值转换为int失败,clickhouse会抛出异常,我如何在转换失败时return null而不是抛出异常?谢谢

SELECT CAST('a' AS Int32)

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                    │
└─────────────────────────────────┘
*/