Zde je příklad vracení řádků, které obsahují alfanumerické znaky v SQLite.
Alfanumerické znaky jsou abecední znaky a číselné znaky.
Příklad
Předpokládejme, že máme tabulku s následujícími údaji:
SELECT c1 FROM t1;
Výsledek:
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í pouze ty řádky, které obsahují pouze alfanumerické znaky:
SELECT c1 FROM t1
WHERE c1 REGEXP '^[A-Za-z0-9]+$';
Výsledek:
Music 007
V tomto případě jsem nezahrnul znaky Unicode jako é
, É
, nebo ø
v mém rozsahu, a tak jsou z výstupu vyloučeny všechny řádky, které tyto znaky obsahují.
Při tom se musíte ujistit, že máte pokryty relevantní znaky.
Zde je příklad rozšíření rozsahu o tyto znaky:
SELECT c1 FROM t1
WHERE c1 REGEXP '^[A-Za-zÀ-Þß-ÿ0-9]+$';
Výsledek:
Music Café 007 é É ø
Znak mezery není alfanumerický. Proto, abychom vrátili řádky, které obsahují mezery, můžeme do našeho regulárního výrazu přidat mezeru:
SELECT c1 FROM t1
WHERE c1 REGEXP '^[A-Za-zÀ-Þß-ÿ0-9 ]+$';
Výsledek:
Music Live Music Café Café Del Mar 100 Cafés Player 456 007 é É é 123 ø ø 123
Následující kód můžeme použít k zahrnutí všech řádků, které obsahují znaky z našeho rozsahu (i když také obsahují znaky mimo tento rozsah):
SELECT c1 FROM t1
WHERE c1 REGEXP '[A-Za-zÀ-Þß-ÿ0-9]';
Výsledek:
Music Live Music Café Café Del Mar 100 Cafés [email protected] 1 + 1 $1.50 Player 456 007 é É é 123 ø ø 123