Zde je příklad vrácení řádků, které obsahují pouze nealfanumerické znaky v SQLite.
Nealfanumerické znaky zahrnují interpunkční znaky jako [email protected]#&()–[{}]:;',?/*
a symboly jako `~$^+=<>“
, stejně jako mezery, jako jsou mezery nebo tabulátory.
Ukázková data
Pro naše příklady použijeme následující data:
SELECT c1 FROM t1;
Výsledek:
+----------------------+ | 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 | +----------------------+
Můžeme použít REGEXP
operátor s regulárním výrazem, který vrátí řádky, které obsahují pouze nealfanumerické znaky:
SELECT c1 FROM t1
WHERE c1 NOT REGEXP '[A-Za-z0-9]';
Výsledek:
+----------------------+ | c1 | +----------------------+ | () | | [email protected]#&()–[{}]:;',?/* | | `~$^+=<>“ | | | | é | | É | | ø | +----------------------+
V tomto případě můj rozsah vyloučení nezahrnoval alfanumerické znaky jako é
, É
a ø
. Následující příklad rozšiřuje rozsah tak, aby byly tyto znaky z výsledku vyloučeny:
SELECT c1 FROM t1
WHERE c1 NOT REGEXP '[A-Za-zÀ-Þß-ÿ0-9]';
Výsledek:
() [email protected]#&()–[{}]:;',?/* `~$^+=<>“
Naše tabulka obsahuje také řádek s prázdným řetězcem. Toto je nealfanumerický znak, a proto je vrácen ve výše uvedeném výsledku. Můžeme také použít NULLIF()
funkce k vyloučení prázdného řetězce z výstupu:
SELECT c1 FROM t1
WHERE NULLIF(c1, '') NOT REGEXP '[A-Za-zÀ-Þß-ÿ0-9]';
Výsledek:
() [email protected]#&()–[{}]:;',?/* `~$^+=<>“