正如标题所述,我正在尝试将STRING转换为INT,但是当字符串无效时我需要一个NULL值。
我已经尝试过CAST和CONVERT
SELECT CONVERT("TEST", INT) FROM DUAL
SELECT CAST("TEST" AS INT) FROM DUAL
但是两个函数对于无效值都返回0。
有一个简短的方法吗?
答案 0 :(得分:1)
您可以检查该值是否看起来像一个有效的整数:
select (case when col regexp '^[0-9]{1,10}$'
then cast(col as unsigned)
end)
或者,您可以只使用隐式转换:
select nullif(col + 0, 0)
但是,这会将零转换为NULL
。