• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:in句の中を無限大のパターンに対応させるには?)

正規表現を使用してin句の中の条件に一致する値を取得する方法

このQ&Aのポイント
  • in句の中の条件に一致する値を取得する方法についてご質問をいただきました。in句の中を無限大のパターンに対応させるためには、正規表現のような使い方をすることが可能です。
  • 具体的には、あるカラムに含まれる複数の条件を基準にして、どれか1つでも条件に一致すれば値を取得するようにすることができます。
  • in句の中は1つ以上9以下の数字で指定されます。また、最初の数値は1から9までの範囲になります。使う文字は数値・英字・日本語文字列・漢字など全ての文字に対応しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.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が前提です

kiseki777
質問者

お礼

ありがとうございます。 3と4から始まり、他の条件とも合わせてデータを取得しようと SELECT * FROM hoge WHERE ccc="あいう" AND if(xxx REGEXP'^[33].*[ee]') AND if(xxx REGEXP'^[44].*[ee]') AND ddd<123 といったようにしてみたのですが、上手にいきませんでした。

全文を見る
すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

スピードに目をつぶればMySQLでも正規表現は使えますよ

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 正規表現で数値から始まりYを1字以上含む文字を判別

    数値から始まり、Yを1字以上含むものをPHPで判別させたいです。 ・最初の数値は「1~9」を扱いたいです。 ・2番目に数値がくることはありません。 ・使う文字は、数値・英字・日本語文字列・漢字・記号などあらゆる文字です。 ・使う文字は全て全角半角の両方に対応 ・全体的な数値と文字列の割合はバラバラです。 ・空白から始まっても× ・文字数制限は特にありません。 たとえば「3」から始まり「e」を含むとき 3eiklあいうeE(←○) 4yyte(←3から始まっていない×) 3rrEき134(←○) Eresry(←3から始まっていない×) 3我Ea(←○) 3aaaa(←eがない×) 3e(←○) 5Eお(←3から始まっていない×) 3E(←○) 3 E(←○)  3E(←空白から始まっている×) $str = $_GET["s"]; //3我Ea if($str{0}=="1" || $str{0}=="1"){$pattern = '/^(1|1)*.(Y|y)/';} ・・・ if($str{0}=="9" || $str{0}=="9"){$pattern = '/^(9|9)*.(Y|y)/';} if (preg_match($pattern, $str)) { echo htmlspecialchars($str, ENT_QUOTES, 'UTF-8')."は○"; } else { echo htmlspecialchars($str, ENT_QUOTES, 'UTF-8')."は×"; } うまくいきません。どのようにしたら良いでしょうか。

    • ベストアンサー
    • PHP
  • sqlparamaterでIN句を使いたい。

    C♯での開発です。 引数で、カンマ区切りの文字列を受け取って、それをIN句に使ったSQLを発行 したいのですが、これをsqlparamaterで出来ないか悩んでいます。 キーが決まった数しかこないのであれば、 command.CommandText = "SELECT * FROM Table1 WHERE NAME IN (@name1,@name2)"; こんな感じでいいんでしょうが、動的である場合、どうしたら良いのでしょうか?

  • Excelでセルの英字を取得する関数

    Excelでセルの英字を取得する関数を教えて下さい。  A B C D E F G 1 2 3 4 5 6 7 エクセルは 横のヘッダにアルファベットが並んでいます。 縦のヘッダに数値が並んでいます。 縦のヘッダは =ROW() で求まります。 1行目で書けば1 5行目で書けば5 と返ってきます。 同じ様に、 =COLUMN()は A列で書けば1 E列で書けば5 と返ってきます。 A列で書けばA E列で書けばE と返って来る関数が欲しいです。

  • SQLが遅い(IN句)

    特定の列を抽出する必要があります。 (検索条件にインデックスはありません。  インデックスはシーケンス番号だけです。) 流すと固まります。 どういうSQLを流すと早くなりますか? select * from 契約テーブル a where (RTRIM(a.住所), RTRIM(a.面積), RTRIM(a.地番), RTRIM(a.契約社名)) IN('川崎','100','100','山田') ,('東京','110','100','山田1') ,('横浜','110','120','山田2') ,('福岡','100','100','山田3') : : 以下検索3000個 ※項目には空白が入っています。 ※テーブルの大きさはでかいです。 よろしくお願いします。

  • アクセス:Inputboxへの文字列補正について

    Inputboxへの入力後エラーを防止するために、(1)~(3)の条件を指定したいのです。 (1)数値(半角)以外を入力できないようにしたい (2)文字列中もしくは文字列前後に空白が含まれる場合は削除したい (3)全角で数値を入力した場合は、半角に補正されるように指定したい (4)文字が入力されたら、「数字を入力してください」というメッセージをいれる 一気に色々な補正をかけようとしたら、エラーになってしまいました。 うまく関数を組み立てることができません。。。 よろしくお願いいたしますm(_ _)m

  • エクセルVBAで質問です。

    エクセルVBAで質問です。 A列   B列 AAAA  1111 BBBB  2222 CCCC  3333 とあります。 上記を AAAA (空白) (空白) 1111 (空白) BBBB (空白) (空白) 2222 (空白) CCCC (空白) (空白) 3333 (空白) A列にB列を挿入し、2・3・5行目に空白のセルを入れていきたいのです。 9000行ぐらいあります。 他の列に A列、B列のものを取得していく形でも構いません。 とにかく、縦1列に並べたいです。 どなたか、ご教授お願い致します。

  • ワード2007での頭揃え

    文字を箇条書きをする際に  行の先頭から、空白4文字(全角)を入力して、文字列を入力する場合と文字列を入力してからカーソルを先頭列に移動させ空白4文字(全角)を入力する場合では、前者は空白で全角4文字分になりますが、後者は、インデントの位置が動き、場合によっては、文字列の先頭文字が頭揃えにならない場合があります。  ゆえに、後者のように文字列を先に入力した場合は、その文字列の前にEnterキーで改行→空白4文字(全角)を入力→文字列の最後にカーソルあわせ、Deleteで改行削除させて頭揃えしています。  後者の場合も前者と同じように、インデントの位置が動くのではなく、空白4文字(全角)が文字列の前に入るように設定変更が出来ないのでしょうか。  …以外と文書作るのにも時間ロスするので…。

  • Excelの抽出方法について

    Excel2003において、英字のみと数字のみを抽出する方法を教えてください!(出来れば関数のみとVBAの両方) A列にはaaaa1111のように英字+数字のパターンで500行ほどあり、 英字の文字数は決まっておらず、数字は3字か4字のどちらかになります。 B列に英字のみ、C列に数字のみの結果を出したいです。 ご教授の程よろしくお願いします。

  • PHPでDBからデータを抽出してHTMLで表示する

    クライアント上で表示されているHTMLのテキストボックスに入力された文字列をホストに送信し、送信した文字列をSQLの抽出条件に設定してDB(MySQL)に登録しているデータ一覧をPHPで取得後、取得したデータ一覧をクライアントのHTMLのTABLEに一覧で表示したいのですが、どのようにPHPとHTMLをプログラムすればよいでしょうか? イメージ MysSQL テーブル カラム1|カラム2|カラム3| AAAAA|BBBBB|CCCCC| BBBBB|BBBBB|CCCCC| DDDDD|BBBBB|CCCCC| HTML テキストボックス カラム1「AAAA」 検索実行↓ HTML テーブル カラム1|カラム2|カラム3| AAAAA|BBBBB|CCCCC| AAAAA|BBBBB|CCCCC| 素人染みた質問で申し訳ございませんが、ご存知の方がいらっしゃいましたら終えてください。 以上

    • ベストアンサー
    • HTML
  • 空白と空白じゃないセルを判断するには?

    いつもお世話になっております。 条件により別のセルへ文字列を入力するという物を組みたいのですが、あてはめるべき表現の仕方がわからなくて困っております。 例で申しますと、 D列とE列に文字列が入っていたり空白だったりするセルが存在します。 条件は 「D列に何かしらの文字列が入っていて(特に決まった形が無い)、E列は空白の時だけ、F列へ「■」と入力し、G列は空白とする。」 「それ以外の条件はすべて、F列は空白、G列には「□」と入力する」 と、いうようにしたいのですが、空白は Dim i As Long For i = 3 To Range("B65536").End(xlUp).Row If Range("D" & i).Value = "" Then のように表現すればよいのかと思ったのですが、 「空白ではない」場合の条件をどのようにすればよいのかわかりません。(その為、全文を作る段階へ進めておりません。)   |D|E|F|G 1|あ| |■| 2|あ|え| |□ 3| |か| |□ 4| | | |□ 「空白ではない」と判断するコードの書き方をお教えいただきたく、よろしくお願いいたします。 環境はWindowsXP、Excel2003です。