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

如果可能,Sql将值转换为int,如果不可能,则将值设置为0,sql,sql-server,Sql,Sql Server,如果可能,需要将值转换为int的Sql查询,如果不可能,请将值设置为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 isnul

如果可能,需要将值转换为int的Sql查询,如果不可能,请将值设置为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'作为int),0)——返回42
选择isnull(try_parse('fred'为int),0)--返回0

如果任何读者不想使用
TRY_PARSE
或任何其他最新的高级转换函数来完成此操作,则可以仅使用
CAST

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;

您真的不需要使用
ISNUMERIC()
。因为您已经有了一个函数
请尝试_PARSE()
,它将为您进行对话。