Sql Преобразовать значение в int, если это возможно, если это невозможно, установить значение 0 - PullRequest
2 голосов
/ 20 сентября 2019

Нужен 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

Ответы [ 2 ]

5 голосов
/ 20 сентября 2019
select isnull(try_parse('42' as int), 0) -- returns 42
select isnull(try_parse('fred' as int), 0) -- returns 0
0 голосов
/ 20 сентября 2019

В случае, если любой читатель захочет сделать это без использования TRY_PARSE или какой-либо другой более современной функции преобразования, можно сделать это, используя только LIKE и 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...