В моем столбце Postgresl только цифры? - PullRequest
1 голос
/ 07 мая 2020

Есть ли способ проверить, содержит ли столбец типа character varying только цифры или значения NULL с помощью Postgresql?

Может быть, что-то вроде (этот синтаксис неверен):

SELECT *
FROM mytable
ORDER BY 
    CASE WHEN mycol ~ '^[0-9\.]+$' THEN 1 ELSE 0 END
LIMIT 1

Я ожидаю TRUE или FALSE как окончательный результат для всего столбца.

Ответы [ 2 ]

1 голос
/ 07 мая 2020

Если вы хотите узнать, являются ли значения во всех строках цифрами, вы можете использовать

select not exists (select *
                   from mytable
                   where not (mycol ~ '^[0-9\.]+$'))

Онлайн-пример

0 голосов
/ 07 мая 2020

Чтобы получить NULL, используйте COALESCE (mycol, 1) - вернет 1, если значение в mycol равно NULL.

Для проверки чисел вы можете использовать регулярное выражение LIKE '^ [0-9] *' it не обнаруживает десятичные точки (не знаю, есть ли в ваших данных десятичные числа)

BR!

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