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]#&()–[{}]:;',?/* `~$^+=<>“