Ето пример за връщане на редове, които съдържат само небуквени и цифрови знаци в SQLite.
Небуквени и цифрови знаци включват препинателни знаци като [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 | +----------------------+
Можем да използваме REGEXP
оператор с регулярен израз за връщане на редовете, които съдържат само небуквени и цифрови знаци:
SELECT c1 FROM t1
WHERE c1 NOT REGEXP '[A-Za-z0-9]';
Резултат:
+----------------------+ | c1 | +----------------------+ | () | | [email protected]#&()–[{}]:;',?/* | | `~$^+=<>“ | | | | é | | É | | ø | +----------------------+
В този случай моят диапазон на изключване не обхваща буквено-цифрови знаци като é
, É
и ø
. Следният пример разширява диапазона, за да изключи тези знаци от резултата:
SELECT c1 FROM t1
WHERE c1 NOT REGEXP '[A-Za-zÀ-Þß-ÿ0-9]';
Резултат:
() [email protected]#&()–[{}]:;',?/* `~$^+=<>“
Нашата таблица също съдържа ред с празния низ. Това не е буквено-цифров знак и затова се връща в горния резултат. Можем също да използваме NULLIF()
функция за изключване на празния низ от изхода:
SELECT c1 FROM t1
WHERE NULLIF(c1, '') NOT REGEXP '[A-Za-zÀ-Þß-ÿ0-9]';
Резултат:
() [email protected]#&()–[{}]:;',?/* `~$^+=<>“