• 締切済み

SQLで条件の文字列を含んでいるデータを取得する方法

SQLにて指定した文字列を含むデータを取得する方法を探しています。 例 テーブル Test 番号   条件 __________ 01    AA 02    BB 03    AA,CC 上記のように、番号と条件という2つのフィールドを持っているテーブルをTestとします。 (1)条件にAAと指定すると、番号01と03が取得。 (2)条件にBBと指定すると、番号02が取得。 (3)条件にAAAと指定すると、一致条件なし。 (1)~(3)のような条件を満たすSQLの構文はありませんでしょうか? ご教授お願いいたします。

  • MySQL
  • 回答数2
  • ありがとう数1

みんなの回答

  • auty
  • ベストアンサー率58% (284/486)
回答No.2

確認はしていませんが,正規表現を使って、    select * from Test where 条件 regexp '^AA$|^AA,|,AA$|,AA,'; ではどうでしょうか。   ^: 始まる   $: 終わる。   |: または

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.1

like構文で良さそうですけど? (1) sqlect * from `Test` where `joken` like '%AA%' ↓ 'AA' 'AA,BB' 'CC,AA' 'xx,AAA,y' などに一致 'A' 'nABC' には一致しない (3) sqlect * from `Test` where `joken` like '%AAA%' ↓ 'AA' 'AA,BB' 'CC,AA' には一致しない 'AAA' 'xx,AAA,y' などに一致 (2) sqlect * from `Test` where `joken` like '%BB%' ↓ 'BB' 'AA,BB' 'BB,CC' 'xx,BBB,yz' などに一致

naruse0908
質問者

お礼

回答ありがとうございます。 (1)のときは"AAA"に一致してほしくないんですよ… (2)のときも"BBB"に一致してほしくないんですよ…

関連するQ&A

  • Oracle SQLでのデータ抽出

    Oracle、SQLともに初心者のため困っています。 どなたか教えてください。 フィールド1、2で重複(2件以上存在)するレコードに対して、そのテーブルの全項目を取得したいのです。 例: 処理前 フィールド1,フィールド2 ,フィールド3 1 , AA, 1 1 , AA, 2 1 , BB, 3 1 , BB, 4 2 , CC, 5 2 , CC, 6 3 , DD, 7 4 , EE, 8 5 , FF, 9 処理後 フィールド1, フィールド2,フィールド3 1 , AA, 1 1 , AA, 2 1 , BB, 3 1 , BB, 4 2 , CC, 5 2 , CC, 6 どうしたらよいでしょうか? よろしくお願い致します。

  • 列番号による項目の取得について

    SQLの構文についての質問です。 あるテーブルからデータを取得する場合、 「SELECT 項目名1,項目名2・・ FROM テーブル名 WHERE 条件」 というSQL文となりますが、 項目名1,項目名2の部分を列番号を指定することによって 値を取得することは可能でしょうか?

  • SQLで最大値を検索条件にする場合の方法

    下記のような<検索対象データ>から、<取得したいデータ>を取得するSQLがわからず困っています。 ご教授下さい。 【条件】 同一[ID]で[NO]が最大のレコードのみを取得する。 <検索対象データ> ID NO DATA ---------------- AA 1 あいうえ AA 2 あいう AA 3 あい BB 1 かきく BB 2 かき CC 1 さしす CC 2 さし <取得したいデータ> ID NO DATA ---------------- AA 3 あい BB 2 かき CC 1 さし よろしくお願いします。

  • SQL:複数行のデータを一つの文字列にまとめたい

    複数行のデータを一つの文字列にまとめる方法を教えてください。 ※環境SQLServer2005 例: ID DATA AA XXX BB YYY AA ZZZ 次のようなテーブルがあるとき、IDがAAであるものを一つの文字列 "XXXZZZ" にまとめたデータにSQLで加工したいです。

  • excel データ抽出方法

    こんいちは 列1と列2を比べて条件が一致したデータを抽出したいのですが,方法がわかりません。どなたかご存知のかた教えていただけないでしょうか? 列1  列2 aa   vv bb   dd cc   ff dd   aa ee   bb この場合aa,bb が一致する。

  • 日付と文字列を条件としてDLookup関数で抽出さ

    日付と文字列を条件としてDLookup関数で抽出させたいです。アクセスです。 テーブル1のデザイン フィールド名 ID(数値型) フィールド1(テキスト型) 取得日時(日付/時刻型) テーブル1のデータ ID  フィールド1  取得日時 1       あ  2013/01/05 2       い  2013/01/05 この条件でvbaでIDの値を抽出したいのですが MsgBox DLookup("[ID]", "テーブル1", "[取得日時] = #2013/01/05#") だと、1が返ってきちゃうのでフィールド1でもフィルタをかけたいのですが どうやればいいでしょうか? MsgBox DLookup("[ID]", "テーブル1", "[取得日時] = #2013/01/05#" And "[フィールド1] = 'あ'") にすると、型が一致しません。(Error 13)になります。 ご教授よろしくお願いします。

  • 文字列を追加してUPDATEしたい

    MySQLサーバのバージョン: 5.1.41 を使ってます。 ・やりたいこと テーブル名:test id | photo | 1 /aaa/aa.jpg 2 /bbb/bb.jpg : : となっているテーブルに対して フィールド名「photo」に格納されている文字列の先頭に 「 http://www.test.com 」 を全てのレコードに対して追加したいと考えております。 希望する結果 テーブル名:test id | photo | 1 http://www.test.com/aaa/aa.jpg 2 http://www.test.com/bbb/bb.jpg : : 説明不足などございましたら、再度補足させていただきます。 アドバイスのほどよろしくお願い致します。

    • ベストアンサー
    • MySQL
  • SQLで○○の値以外を持っているレコードを抽出しないという条件を作りた

    SQLで○○の値以外を持っているレコードを抽出しないという条件を作りたいのですが・・・ 例えばこんな感じのテーブルがあったとします。 A1 A2 A3 -- -- -- AAA AA 111 AAA AB 111 AAA BB 222 BBB BB 111 CCC AA 111 CCC AC 555 DDD BB 222 EEE AA 111 EEE AC 333 EEE BB 777 A2の列に「BB」の値"しか"持っていないレコードを抽出したいのです このテーブルで言えば返りは BBB BB 111 DDD BB 222 と期待しています。 値BBのみしか持ってない条件の作り方を御教示願えませんでしょうか。 また、A2の値も文字数以外は規則性があるわけではないので無限パターンです。 詳しい方よろしくお願いします。

  • 列を結合させて外部キーを設定する方法

    AテーブルのAA列とBB列を結合させて 見かけ上CC列を作成し BテーブルのDD列を外部キーをはりたいのですが そういった事は可能でしょうか? イメージ的には以下のような感じです。 Aテーブル AA列 decimal (1,0)    DD列 decimal (3,0) 外部キー CC列(AA列+BB列)とDD列 Bテーブル DD列 decimal (4,0) 解り難くて申し訳ございませんがよろしくお願いします。

  • SQL 同テーブル、同フィールドの文字列連結

    以下の様にSQLで実現したいと思っております。 なお、DBはOracle10Gを利用しております。 親と子テーブルがあり以下の構成となっております。 ■親テーブル  ID,カラムA  1 ,AA  2 ,BB  3 ,CC ■子テーブル  ID,枝番,カラムB  1 ,1 ,あああ  1 ,2 ,いいい  2 ,1 ,ううう  2 ,2 ,えええ  2 ,3 ,おおお  3 ,2 ,かかか ※IDカラムは親テーブルと子テーブルは1:1です  子テーブルの枝番カラムはIDに対してN件です。 やりたい事としては、上記の2テーブルより、以下の結果を出力したいです。  ID,カラムA,カラムB  1 ,AA ,あああ いいい  2 ,BB ,ううう えええ おおお  3 ,CC ,かかか 親テーブルを元にして、 親テーブルに紐づく子テーブルのカラムBを連結して出力 するSQLをご教授いただけますでしょうか