Mysqlのクエリで値「hogehoge」を用いて下記の対象をすべてマッチさせるクエリを知りたいです。

・「hoge hoge」
・「hoge hoge」
・「hoge hoge hoge」


下記のようなクエリを考えたのですが全角スペースと半角スペースが入っている対象にマッチできませんでした。
SELECT * FROM `table` WHERE
replace(`column`, ' ', '') = 'hogehoge' AND
replace(`column`, ' ', '') = 'hogehoge';

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/04/01 10:17:21
  • 終了:2010/04/01 10:49:32

ベストアンサー

id:taknt No.1

きゃづみぃ回答回数13481ベストアンサー獲得回数11982010/04/01 10:28:17

ポイント50pt

SELECT * FROM `table` WHERE

replace(replace(`column`, ' ', '') , ' ', '') = 'hogehoge';

このように 半角空白を除いたものから 全角空白を除いて、一致するかしてみたらいかがでしょうか?

id:php-beginner

replaceの中にreplaceって出来るんですね!

うまくマッチできました!

ありがとうございました。

2010/04/01 10:43:52

その他の回答(1件)

id:taknt No.1

きゃづみぃ回答回数13481ベストアンサー獲得回数11982010/04/01 10:28:17ここでベストアンサー

ポイント50pt

SELECT * FROM `table` WHERE

replace(replace(`column`, ' ', '') , ' ', '') = 'hogehoge';

このように 半角空白を除いたものから 全角空白を除いて、一致するかしてみたらいかがでしょうか?

id:php-beginner

replaceの中にreplaceって出来るんですね!

うまくマッチできました!

ありがとうございました。

2010/04/01 10:43:52
id:GreenStar No.2

GreenStar回答回数192ベストアンサー獲得回数462010/04/01 10:39:13

ポイント20pt

ANDをORに変えればいいというような手抜き回答がきてそうな気がする~~~w


正規表現使ったほうがいいでしょうね。

CREATE TEMPORARY TABLE test(`column` TEXT);
INSERT INTO test VALUES ('hoge hoge'),('hoge hoge'),('hoge hoge hoge'),('fugo fugo'),('fugo fugo'),('fugo fugo fugo');
SELECT * FROM test WHERE `column` regexp '.*hoge( | )hoge.*';

http://dev.mysql.com/doc/refman/4.1/ja/regexp.html

http://dev.mysql.com/doc/refman/5.1/ja/regexp.html

id:php-beginner

今回どこでスペースが入るか予測出来ないんですよ。

一文字区切りでやれば良いのですがシンプルではないので悩んでいました。

2010/04/01 10:47:40
  • id:GreenStar
    = 'hogehoge'; だと「hoge hoge hoge」は対象外になるけどいいの?
    対象外でよければ AND を OR に変えるほうが軽くなっていいと思うけど?
  • id:php-beginner
    あっ質問を間違えてました・・・。
    最後の対象「hoge hoge 」でhoge一つ余分でした。
    申し訳ないです。

    今回、結果的には問題ナシでした。
  • id:GreenStar
    なるほどね。それなら入れ子にするよりANDをORに変えるだけのほうがいいよ。
    入れ子だと無条件に2回replaceが実行されちゃうけどORだと最初に行ったほうがFALSEだと、もう一方は処理されずに次のレコードの処理に入るから全体としての処理は軽くなるよ。
  • id:php-beginner
    スイマセン・・・。
    そこも質問間違えてました・・・orz
    実際はORで試していました。

    半角だけ、全角だけならマッチするのですが両方が入っているとマッチできませんでした。
  • id:GreenStar
    なるほどね。その2。
    そこまでは読みきれなかったです。まっすぐお馬鹿な回答でした。ごめんなさい。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません