SQL преобразовать STRING в INT с NULL на недопустимое значение - PullRequest
0 голосов
/ 22 мая 2019

Как видно из названия, я пытаюсь преобразовать STRING в INT, но мне нужно значение NULL, когда строка недопустима.

Я уже пробовал с CAST и CONVERT

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

но обе функции возвращают 0 для недопустимого значения.

Есть короткий способ сделать это?

1 Ответ

1 голос
/ 22 мая 2019

Вы можете проверить, выглядит ли значение как допустимое целое число:

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

Или вы можете просто использовать неявное преобразование:

select nullif(col + 0, 0)

Однако, это преобразует нули в NULL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...