Sql 如果可能,将值转换为 int,如果不可能,请将值设置为 0



需要 Sql 查询,如果可能,将值转换为 int,如果不可能,请将值设置为 0。

SELECT IIF((isnumeric('11961630')),TRY_PARSE('11961630' as int), 0) => it should return 11961630
SELECT IIF((isnumeric('CH11961630')),TRY_PARSE('CH11961630' as int), 0) => it should return 0
select isnull(try_parse('42' as int), 0) -- returns 42
select isnull(try_parse('fred' as int), 0) -- returns 0

如果任何读者想要一种不使用TRY_PARSE或任何其他最新花哨的转换函数的方法,则可以仅使用LIKECAST来做到这一点:

SELECT
input,
CASE WHEN input NOT LIKE '%[^0-9]%' AND
CAST(input AS DECIMAL(10,0)) BETWEEN -2147483648 AND 2147483647
THEN CAST(input AS INT) ELSE 0 END AS output
FROM yourTable;

相关内容

  • 没有找到相关文章

最新更新