PostgreSQL | Проверка возможности приведения строки к целому числу

PostgreSQL | Проверка возможности приведения строки к целому числу

Нам нужно получить логическое значение при попытке приведения строки SQL к целому числу SQL. Как это сделать?

Можно использовать тильду «~» от регулярных выражений в стиле POSIX:

select 'qwe' ~ '^[1-9][0-9]*$'; --false
select '0000asd' ~ '^[1-9][0-9]*$'; --false
select '0000' ~ '^[1-9][0-9]*$'; --false
select '0123' ~ '^[1-9][0-9]*$'; --false
select '123zxc' ~ '^[1-9][0-9]*$'; --false
select '123.456' ~ '^[1-9][0-9]*$'; --false
select '123' ~ '^[1-9][0-9]*$'; --true

Начиная с 15 версии PostgreSQL сделать это можно при помощи функции «regexp_like()«, которая работает с регулярными выражениями:

select regexp_like('qwe', '^[1-9][0-9]*$'); --false
select regexp_like('0000asd', '^[1-9][0-9]*$'); --false
select regexp_like('0000', '^[1-9][0-9]*$'); --false
select regexp_like('0123', '^[1-9][0-9]*$'); --false
select regexp_like('123zxc', '^[1-9][0-9]*$'); --false
select regexp_like('123.456', '^[1-9][0-9]*$'); --false
select regexp_like('123', '^[1-9][0-9]*$'); --true

Нам не обязательно использовать флаг «i» для шаблона регулярного выражения, так как у цифр нет понятия нижнего и верхнего регистров.

 

Как проверить версию PostgreSQL?

select version();

Команда выдаст информацию о текущей версии PostgreSQL, а также об операционной системе, в которой она работает.