一、问题描述
当我们尝试将字符串 'NULL' 直接转换为 BIGINT 时,会遇到 NumberFormatException,因为 'NULL' 不是一个有效的数字字符串。为了避免这种错误,我们需要在转换之前进行检查。
解决方案
我们可以使用 CASE 语句来实现条件转换。具体步骤如下:
-
使用
CASE语句进行条件判断:- 检查字符串是否为
'NULL', 如果是'NULL',则返回0;否则,将字符串转换为BIGINT。
- 检查字符串是否为
-
最外层进行
CAST操作:- 确保整个
CASE语句的结果被转换为BIGINT类型。
- 确保整个
示例代码
SELECT
CAST(
CASE
WHEN original_value = 'NULL' THEN 0
ELSE CAST(original_value AS BIGINT)
END
AS BIGINT) AS zmt_id
FROM (
SELECT 'NULL' AS original_value
UNION ALL
SELECT '123' AS original_value
UNION ALL
SELECT '456' AS original_value
) AS test_data;
解释
- 内层
CASE语句:用于检查original_value是否为'NULL',并根据条件返回0或将其转换为BIGINT。 - 外层
CAST:确保最终结果为BIGINT类型。
1177

被折叠的 条评论
为什么被折叠?



