私はMySQLで英数字のみを含むすべての行を選択しようとしています:
SELECT * FROM table WHERE column REGEXP '[A-Za-z0-9]';
ただし、英数字以外の文字が含まれているという事実に関係なく、すべての行が返されます。
このコードを試してください:
SELECT * FROM table WHERE column REGEXP '^[A-Za-z0-9]+$'
これにより、すべての文字が確実に一致します。
ステートメントは、他の非英数字を含む場合でも、文字または数字を含む文字列と一致します。これを試して:
SELECT * FROM table WHERE column REGEXP '^[A-Za-z0-9]+$';
^
および$
は、文字列の一部ではなく、文字列全体が一致することを要求し、+
は1を探しますまたはそれ以上英数字。
必要に応じて、名前付き文字クラスを使用することもできます。
SELECT * FROM table WHERE column REGEXP '^[[:alnum:]]+$';
これを試して:
REGEXP '^[a-z0-9]+$'
正規表現では、バイナリフィールドを除き、大文字と小文字は区別されません。
これもあります:
select m from table where not regexp_like(m, '^[0-9]\d+$')
目的の列から文字を含む行を選択します(この例ではmですが、変更できます)。
ほとんどの組み合わせはOracleプラットフォームでは正しく動作しませんが、これは動作します。将来の参考のために共有しています。