- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:in句の中を無限大のパターンに対応させるには?)
正規表現を使用してin句の中の条件に一致する値を取得する方法
このQ&Aのポイント
- in句の中の条件に一致する値を取得する方法についてご質問をいただきました。in句の中を無限大のパターンに対応させるためには、正規表現のような使い方をすることが可能です。
- 具体的には、あるカラムに含まれる複数の条件を基準にして、どれか1つでも条件に一致すれば値を取得するようにすることができます。
- in句の中は1つ以上9以下の数字で指定されます。また、最初の数値は1から9までの範囲になります。使う文字は数値・英字・日本語文字列・漢字など全ての文字に対応しています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ごめんなさい、書き方がわるかった where句につなげる場合は、ifはいらない たとえば3か4で始まってeを含むレコードはこう SELECT * FROM hoge WHERE val REGEXP'^[3344].*[ee]'; あとは諸条件をandでつなげばよい
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
回答No.2
ちなみにこんな感じ create table hoge (id int not null primary key auto_increment,val varchar(20)); insert ignore into hoge(val) values('3eikl'),('4yyte'),('3rrEき134'),('Eresry'),('3我Ea'),('3aaaa'),('3e'),('5Eお'),('3E'),('3 E'),(' 3E'); select *, if(val regexp '^[33].*[ee]','○','×') as judge from hoge ; 日本語はutf8が前提です
- yambejp
- ベストアンサー率51% (3827/7415)
回答No.1
スピードに目をつぶればMySQLでも正規表現は使えますよ
お礼
ありがとうございます。 3と4から始まり、他の条件とも合わせてデータを取得しようと SELECT * FROM hoge WHERE ccc="あいう" AND if(xxx REGEXP'^[33].*[ee]') AND if(xxx REGEXP'^[44].*[ee]') AND ddd<123 といったようにしてみたのですが、上手にいきませんでした。