SQL Преобразование STRING в INT с NULL для недопустимого значения

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

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

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

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

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

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
109
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

select nullif (col + 0, 0)

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

Другие вопросы по теме