По-долу са две опции за връщане на редове, които съдържат само небуквени и цифрови знаци в PostgreSQL.
Небуквени и цифрови знаци включват препинателни знаци като [email protected]#&()–[{}]:;',?/*
и символи като `~$^+=<>“
, както и празни знаци като интервалите или табулацията.
Примерни данни
Ще използваме следните данни за нашите примери:
SELECT c1 FROM t1;
Резултат:
+----------------------+ | c1 | +----------------------+ | Music | | Live Music | | Café | | Café Del Mar | | 100 Cafés | | [email protected] | | 1 + 1 | | () | | [email protected]#&()–[{}]:;',?/* | | `~$^+=<>“ | | $1.50 | | Player 456 | | 007 | | NULL | | | | é | | É | | é 123 | | ø | | ø 123 | +----------------------+
Опция 1:Сравнете с [:alnum:]
Можем да използваме !~
на PostgreSQL оператор, за да сравните нашата колона с регулярен израз. Използваме този оператор, когато искаме да посочим, че стойността не съвпада с регулярния израз.
Възможността за регулярни изрази на MySQL включва поддръжка за POSIX символните класове. Следователно можем да използваме [:alnum:]
POSIX символен клас в нашия регулярен израз.
SELECT c1 FROM t1
WHERE c1 !~ '[[:alnum:]]';
Резултат:
() [email protected]#&()–[{}]:;',?/* `~$^+=<>“
Празният низ също е числово-цифров и този пример върна реда, който съдържа празния низ.
Можем да изключим празни низове, като използваме NULLIF()
:
SELECT c1 FROM t1
WHERE NULLIF(c1, '') !~ '[[:alnum:]]';
Резултат:
() [email protected]#&()–[{}]:;',?/* `~$^+=<>“
Опция 2:Посочете диапазон от знаци
Друг начин да го направите е да посочите диапазон от знаци във вашия регулярен израз.
Пример:
SELECT c1 FROM t1
WHERE c1 !~ '[A-Za-z0-9]';
Резултат:
() [email protected]#&()–[{}]:;',?/* `~$^+=<>“ é É ø
И за да премахнете празния низ:
SELECT c1 FROM t1
WHERE NULLIF(c1, '') !~ '[A-Za-z0-9]';
Резултат:
() [email protected]#&()–[{}]:;',?/* `~$^+=<>“ é É ø
В този случай моят диапазон на изключване не обхваща буквено-цифрови знаци като é
, É
и ø
, и така изходът не е истинско представяне на небуквени и цифрови знаци. Въпреки това, поне този метод ви дава възможност да посочите точните знаци, които искате да включите или изключите от резултата.