Можно ли определить строки значения которых не являются значениями из английского алфавита (postgresql)

Рейтинг: 0Ответов: 1Опубликовано: 27.03.2023

В базу данных в поле, которое может быть помечено как, varchar или text, попали данные из алфавитов, отличных от английского. Ведь когда данные сохраняются, то postgresql хранит клиентскую кодировку и ничего не меняет. Как найти строки, которые не содержат значения из английского алфавита (буквенно-цифровые)?

Ответы

▲ 0
select * from client c where (c.username ~* '(?:[a-zA-Z]\d)|(?:\d[a-zA-Z])') is false;

Решил искать по принципу сравнения кодовых значений из таблицы Unicode. Так как мне нужны только алфавитно-цифровые символы из английского, поэтому строка выше выведет только те строки, которые не соответствуют полностью регулярному выражению.