SQL将STRING转换为无效值时为NULL的INT

时间:2019-05-22 12:32:33

标签: sql mariadb

正如标题所述,我正在尝试将STRING转换为INT,但是当字符串无效时我需要一个NULL值。

我已经尝试过CAST和CONVERT

SELECT CONVERT("TEST", INT) FROM DUAL
SELECT CAST("TEST" AS INT) FROM DUAL

但是两个函数对于无效值都返回0。

有一个简短的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以检查该值是否看起来像一个有效的整数:

select (case when col regexp '^[0-9]{1,10}$'
             then cast(col as unsigned)
        end)

或者,您可以只使用隐式转换:

select nullif(col + 0, 0)

但是,这会将零转换为NULL