• ベストアンサー

REGEXPで希望の動作をしてくれない

atseの回答

  • ベストアンサー
  • atse
  • ベストアンサー率83% (36/43)
回答No.1

>SELECT * FROM test_db WHERE user_id REGEXP '^11$' 全くやりたいことが同じとこの説明では、 ~ '^11$|^11,|,11$|,11,' となっているのに、なぜ '^11$' のみにしちゃったのでしょうか。 同じにすればよいのでは。 あと全角スペースが入っているようなので注意です。(REGEXP ←)

gogo8999
質問者

お礼

おっしゃるとおりにやりましたらちゃんとできました。 どうもありがとうございました。

関連するQ&A

  • カンマ区切りの文字列を検索する

    「1,2,3,5,10…」のようにカンマ区切りになっている文字列が格納されているカラム(number)があり、その文字列に含まれている数字と検索用配列「1,2,3」と比較して存在すれば抽出するみたいなことがやりたいのですがよくわかりません。 カンマ区切りではなく単一の数字であれば select * from tests where number IN(1,2,3); みたいな感じでnumberがIN()のなかにあるかどうかで抽出できると思うのですが、この場合はどのようにすればよいのでしょうか。 ちょっと説明が下手でわかりづらいかと思いますがよろしくおねがいします。

    • ベストアンサー
    • MySQL
  • mysql_num_rowを繰り返したい

    ラジオボタン選択肢アンケートのデータをMySQLのテーブルに入れて、 mysql_num_row()で各選択肢の件数を抽出したいのですが。 選択肢は1~5の数値(int型)でanテーブルに入っています。 for ($i = 1; $ <= 5; $++) { $rst = mysql_query("SELECT * FROM an WHERE field=$i", $con); $kotae.$i = mysql_num_row($rst); } このように書くと 1の選択肢の数しか返してきません。しかも、件数が間違って返ってくる。  文法が間違っているからだと思うのですが。上記のようなことをやりたいのです。  forを使わないでやると、 $rst = mysql_query("SELECT * FROM an WHERE field=1",$con); $kotae1 = mysql_num_rows($rst); $rst = mysql_query("SELECT * FROM an WHERE field=2",$con); $kotae2 = mysql_num_rows($rst); $rst = mysql_query("SELECT * FROM an WHERE field=3",$con); $kotae3 = mysql_num_rows($rst); $rst = mysql_query("SELECT * FROM an WHERE field=4",$con); $kotae4 = mysql_num_rows($rst); $rst = mysql_query("SELECT * FROM an WHERE field=5",$con); $kotae5 = mysql_num_rows($rst); です。  forを使って楽にやりたい場合はどうすればよいでしょうか 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • shellからmysqlを起動時に変数を使用したい

    現在bashからmysqlを起動しselect文でテーブルから取得したデータをcsvで出力する、というツールを作成しています。 shell実行時の第一引数にカンマ区切りでデータを入力し、その引数をwhere句(in)の条件として使用しているのですが、カンマ区切りで入力された引数をinの対象データとしてうまく扱うことだできません。 どなたか良い方法はありませんでしょうか? -------------------問題部分------------------------- JOUKEN = $1 mysql -u xxxxx -xxxxx xxxxx_db SELECT * FROM TABLE1 T1 WHERE T1.NUMBER IN ("${JOUKEN}") ---------------------------------------------------- ◆現状 (1)複数のデータを対象とせず(カンマで区切らず)使用する事は可能。 (2)現在変数がダブルクォートでくくられているため、引数をカンマ区切りで指定しても1つの文字列として見られてしまう。 (3)ダブルクォートを外すと構文エラーとなってしまう。 (4)ダブルクォートを外した際に、変数の使用方法を「$JOUKEN」「{$JOUKEN}」など試したが、同様にエラー。 よろしくお願いします!

  • Access VBA 日付で抽出できない?

    次の質問にお答えいただけませんか。 フォームで抽出条件を入力しテーブルから抽出をするとき Dim db As DAO.Database Dim rs As DAO.Recordset Dim mySQL As String Set db = CurrentDb() mySQL = "SELECT * FROM T_明細 " _ & "WHERE 顧客ID = " & CStr(Me!txtKey) & ";" Set rs = db.OpenRecordset(mySQL, dbOpenDynaset) 上記のような記述をしました。 テーブル名:T_明細   フィールド:顧客ID  日付 金額  フォームの抽出条件入力テキストボックス:txtKey このとき顧客IDでの抽出は問題なく出来ましたが "WHERE 顧客ID = を "WHERE 日付 = に変更して日付で抽出をしたいのですがうまくいきません。 テーブルの日付フィールドは 書式をgee-mm-dd 定型入力を>L99\-99\-99;0;# で書き込みました。 フォームのtxtKeyテキストボックスのプロパティも書式をgee-mm-dd 定型入力を>L99\-99\-99;0;#に設定してあります。 このようなときは mySQL = "SELECT * FROM T_明細 " _ & "WHERE 日付 = " & CStr(Me!txtKey) & ";" の、記述を何か変更しないといけないような気もしますが 対処の方法を教えていただけませんか。

  • 月に対応するフィールドを抽出するSQL

    検索がまずいのか、過去ログに見当たりませんでした。 よろしくお願いします。 以下を実行して、テーブルを作成したとします。 CREATE TABLE table_name (date1 date ,data varchar(20)) データを入力して、 date1 data field1 2004-03-01 AAA field2 2004-03-02 BBB field3 2004-03-03 CCC field4 2004-04-01 DDD これから、3月に対応するフィールドだけを抽出する クエリー文を教えてください。 SELECT * FROM table_name WHERE date1( 以下の文 ) 実際のデータベースでは、月締め計算をしたいのです。 日付は、上記と同じ date 型です。 PHP+MySQLで動かしています。 POSTで実際に受け渡される値は、「2004-3」です。

  • 特定のフィールドにデータが入っている件数を表示したい

    ageというフィールドにデータが入っているものだけを抽出してその件数を表示したいのですが、どのようなsql文を書けばいいでしょうか? ageフィールドは、種別「varchar(255)」、NULL「いいえ」、デフォルト値「空欄」になっています。 $sql = "SELECT COUNT(*) AS cnt FROM table where 'age' is not null;"; これではうまくいきませんでした。ageのデフォルト値をNULLにすれば解決するのでしょうか?

    • ベストアンサー
    • MySQL
  • クエリーの作り方

    SQLから、Postgres上のデータを参照しています。 まず、この形式で取り出そうとしています。 $query = 'select * from comment where oya = ■■'; この、■■のところには整数が入りますが、 事前にアレイに入れてある数字「 $DB_data[0] 」から、 whileでぐるぐる回して検索したいのですが、 こうすると、エラーになります。 $query = 'select * from comment where oya = $DB_data[0]'; エラー Query failed: ERROR: syntax error at or near "$" at character 何か良い手はないでしょうか? 別のテーブルの数値を持ってきて、$を使わずに検索できれば・・ こういうのも可能でしょうか・・?

    • ベストアンサー
    • PHP
  • データベースのワイルドカードは%ではないの?

    アクセスのテーブルに あ い う があり、 SQL文で *********************************************** SELECT テーブル1.フィールド FROM テーブル1 WHERE (((テーブル1.フィールド) Like "%あ%")); *********************************************** としてもエラーにならないけど、「あ」が抽出されません。 *********************************************** SELECT テーブル1.フィールド FROM テーブル1 WHERE (((テーブル1.フィールド) Like "*あ*")); *********************************************** にすると、「あ」が抽出されます。 アクセスなどのデータベースのワイルドカードは%だと思っていたのですが違うのですか?

  • 特定条件でWHERE句の条件を変更したい

    @jouken int @sql varchar(MAX) @select varchar(MAX) @where varchar(MAX) set @select = 'select * from table1' set @where = ' where case when @jouken = 0 then 'field1 = 1' when @jouken = 1 then 'field1 = 1 or field2 = 1' when @jouken = 2 then 'field1 = 1 or field2 = 1 or field3 = 1' end ' set @sql=@select+@where exec(@sql) 上記のような文字列の組み合わせでの作成でやりたいことはできたのですが、 こちらを直接SQLの中でやりたいのです。 以下の文は機能しません。 select * from table1 where case when @jouken = 0 then field1 = 1 when @jouken = 1 then field1 = 1 or field2 = 1 when @jouken = 2 then field1 = 1 or field2 = 1 or field3 = 1 end ご教授の程、よろしくお願い致します

  • MySQLで数字の値のもののみを取り出す

    SELECT * FROM `sample_table` WHERE 'test' REGEXP '^[0-9]+$' と記述し、「test」内の値が数字のもののみを取り出そうと思いましたがうまくいきません。 1や2、3などの数字だけの値があるにもかかわらず、返り値が空になります。 WHERE NOTとすると全ての列が表示されるので、REGEXPが上手く宣言できていないのかとも思いますが、原因・対策共にわかりません。 どのようにすれば、数字のもののみを取り出すことができるのでしょうか。

    • ベストアンサー
    • MySQL