Нам нужно получить логическое значение при попытке приведения строки 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, а также об операционной системе, в которой она работает.