質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

3回答

6589閲覧

mysql 部分一致検索について

miyagi1987

総合スコア32

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2015/11/17 02:58

mysqlの部分一致検索についてですが、特定文字列が一致する場合を検索結果としたいのですが、方法が分かりません。

例えば、以下のカラムに対して、"商品名"とLIKEで検索すると該当レコードがヒットするのですが、商品名テストと検索するとヒットしないので、ご教授お願いいたします。

product_name : 商品名(テスト)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

like '%商品名%'であれば、「商品名を含む」で検索できますが
like '%商品名テスト%'では「商品名テストを含む」なので、「商品名(テスト)」は不一致になり除外されます。
like '%商品名%' and like '%テスト%'とすれば取得できるでしょう。
そのためには「商品名テスト」という文字列をどう分割するかですが、通常の検索フォームを見ても
スペース区切りでand検索、というケースが多く、それに踏襲してはいかがでしょうか。

投稿2015/11/17 03:05

anonymouskawa

総合スコア856

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyagi1987

2015/11/17 03:16

皆様、迅速な回答ありがとうございます。 正規表現を用いた検索で何とかなりそうでした。 SELECT * FROM ***** WHERE product_name REGEXP '^(商品名|テスト)'; ありがとうございました。
urdapple

2015/11/17 04:07

^(商品名|テスト) これだと 「^」 文頭に 「(商品名|テスト)」 「商品名」か「テスト」って文字列がある ってことなので、 「商品名(テスト)」の内、「【商品名】(テスト)」の墨カッコの部分にだけマッチしているようですけれど、大丈夫ですか?「商品名(【テスト】)」この部分は関係なくなっちゃってますね これはSQLで書くなら like "商品名%" or like "テスト%" と、同じ意味です。
anonymouskawa

2015/11/17 04:48 編集

・システムで使いたいから(動的に値が変わるから) ・調査で使いたいから(いつも手で打つから自由に書き換えられる) ・勉強のため(動けばいい) ・その他 どれでしょうか…。 「商品名テスト」(区切りはこちらで決めて良い)で以下のどの文言が該当すればよいですか? 「商品名」 「商品名テスト」 「商品名のテスト」 「ああ商品名あああ」 「ああ商品名テストあああ」 「テスト商品名」 「テストの商品名」 「ああテスト商品名あああ」 「ああテストの商品名あああ」
anonymouskawa

2015/11/17 05:59

案は出しておく select * from a where a.product_name REGEXP '.*(商品名|テスト).*(商品名|テスト).*';
guest

0

mysql 部分一致 LIKE

という感じで検索するとわかりやすくて詳しいページがあるのでご参考あれ。

LIKE '%パターン%'
という感じになります。

投稿2015/11/17 03:03

tanat

総合スコア18711

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

正規表現で書くなら

^商品名.*テスト

こうですかね?
これで、文頭に「商品名」があって、更に数文字後に「テスト」って語があるカラムにマッチする・・・かな?
今実行できる環境下にないので間違っていたらすいません(;・∀・)

○「商品名(テスト)」
○「商品名テスト」
○「商品名違う商品(テスト)
×「商品名」
×「違う商品名」
×「違う商品名(テスト)」
って感じでマッチしませんかね?

投稿2015/11/17 04:12

編集2015/11/17 04:21
urdapple

総合スコア83

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問