Oto przykład zwracania wierszy zawierających tylko znaki niealfanumeryczne w SQLite.
Znaki inne niż alfanumeryczne obejmują znaki interpunkcyjne, takie jak [email protected]#&()–[{}]:;',?/*
i symbole takie jak `~$^+=<>“
, a także znaki odstępu, takie jak spacja lub tabulatory.
Przykładowe dane
W naszych przykładach użyjemy następujących danych:
SELECT c1 FROM t1;
Wynik:
+----------------------+ | 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 | +----------------------+
Możemy użyć REGEXP
operator z wyrażeniem regularnym do zwracania wierszy zawierających tylko znaki niealfanumeryczne:
SELECT c1 FROM t1
WHERE c1 NOT REGEXP '[A-Za-z0-9]';
Wynik:
+----------------------+ | c1 | +----------------------+ | () | | [email protected]#&()–[{}]:;',?/* | | `~$^+=<>“ | | | | é | | É | | ø | +----------------------+
W tym przypadku mój zakres wykluczeń nie obejmował znaków alfanumerycznych, takich jak é
, É
i ø
. Poniższy przykład rozszerza zakres, aby wykluczyć te znaki z wyniku:
SELECT c1 FROM t1
WHERE c1 NOT REGEXP '[A-Za-zÀ-Þß-ÿ0-9]';
Wynik:
() [email protected]#&()–[{}]:;',?/* `~$^+=<>“
Nasza tabela zawiera również wiersz z pustym ciągiem. Jest to znak niealfanumeryczny, więc jest zwracany w powyższym wyniku. Możemy również użyć NULLIF()
funkcja wyłączająca pusty ciąg z wyjścia:
SELECT c1 FROM t1
WHERE NULLIF(c1, '') NOT REGEXP '[A-Za-zÀ-Þß-ÿ0-9]';
Wynik:
() [email protected]#&()–[{}]:;',?/* `~$^+=<>“