無能プログラマの開発日誌

無能からの脱却をはかるため、畑を耕すように自分を開拓しようと考えたプログラマの開発メモ

MySQLでの正規表現

特定の記号区切りの数字限定のデータについて、不正な文字列(数字以外の文字がはいってしまっている)となっている行を検索する場合。

区切り文字が「<>」の場合

SELECT *
FROM `test`
WHERE zekken
REGEXP '[^0-9<>]|<[^>]|[^<]>|^<|>$'

※解説
[^0-9<>] ・・・0から9以外の文字(数字以外)と「<」「>」以外
<[^>]   ・・・後に「>」が続かない「<」(区切り文字列じゃない)
[^<]>   ・・・前に「<」が付かない「>」(区切り文字列じゃない)
^<    ・・・文の最初に「<」が付く
>$     ・・・文の最後に「>」が付く