質問: ### 前提・実現したいこと mysql 任意の文字列を含まない文字列の正規表現 ### 発生している問題・エラーメッセージ 文字列中に「アイウエオ」を含まないレコードを取得したいのですが、レコードが1件も取得できません。 ### 該当のソースコード 実行したsql : SELECT * FROM master WHERE m_kana REGEXP '^(\\?!アイウエオ).*$' 「?」をエスケープしています。 phpMyadmin上で直接叩いて実行しています。 ### 試したこと 「?」をエスケープせず実行 : SELECT * FROM master WHERE m_kana REGEXP '^(?!アイウエオ).*$' ### 補足情報(FW/ツールのバージョンなど) Mysql 5.6 MariaDB 10.1上では、「?」をエスケープせず下記のSQL文を使って正常なレコードを取得できました。 SELECT * FROM master WHERE m_kana REGEXP '^(?!アイウエオ).*$'
回答: 正規表現を使わずに、これではまずいのでしょうか。 ``` SELECT * FROM master WHERE m_kana NOT LIKE '%アイウエオ%' ``` なお、MariaDBは10.0.5からPCREが入って正規表現が強化されています。それ以前のMySQL 5.6では、`(?!`のような高度な正規表現に対応していません。