mysqlのwhere文についてですが、=で比較したときとlikeで比較した時とで、結果が違うのは、どういう仕様によるものなのでしょうか?

例えば、「○○」と「○○ 」(最後に半角スペースあり)というデータがある時、='○○'で比較すると両方出てきますが、like '○○'で比較すると片方しかでてきません。
likeが正しいのだとは思いますが、どんな違いがあるのかと思い、質問させて頂きました。

回答の条件
  • 1人2回まで
  • 登録:2008/09/10 13:25:35
  • 終了:2008/09/10 18:34:32

ベストアンサー

id:Mook No.1

Mook回答回数1312ベストアンサー獲得回数3912008/09/10 13:54:05

ポイント100pt

MySQL の仕様としてそうなっているようです。

http://dev.mysql.com/doc/refman/4.1/ja/comparison-operators.html


いずれかの標準演算子(= や <> など。LIKE  は含まない)を使用してケース非依存文字列を比較する場合、
後続の空白(スペース、タブ、改行復帰)は無視されます。 

とのことですので、=の場合は後続の空白が無視され、LIKE は厳密に動作するということのようです。

id:MrB

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

リファレンスもみたのですが、なかなか自分では探しきれませんでした。

ヤフーで = を含めて検索しても出て来ないので・・・。

2008/09/10 18:26:36

その他の回答(1件)

id:Mook No.1

Mook回答回数1312ベストアンサー獲得回数3912008/09/10 13:54:05ここでベストアンサー

ポイント100pt

MySQL の仕様としてそうなっているようです。

http://dev.mysql.com/doc/refman/4.1/ja/comparison-operators.html


いずれかの標準演算子(= や <> など。LIKE  は含まない)を使用してケース非依存文字列を比較する場合、
後続の空白(スペース、タブ、改行復帰)は無視されます。 

とのことですので、=の場合は後続の空白が無視され、LIKE は厳密に動作するということのようです。

id:MrB

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

リファレンスもみたのですが、なかなか自分では探しきれませんでした。

ヤフーで = を含めて検索しても出て来ないので・・・。

2008/09/10 18:26:36
id:b-wind No.2

b-wind回答回数3344ベストアンサー獲得回数4402008/09/10 14:20:34

ポイント100pt

MySQL :: MySQL 4.1 リファレンスマニュアル :: A.5.1 検索時のケース依存

基本的には Mook さんの回答でOKですが、補足すると MySQL の場合

ケース非依存( 大文字小文字を区別しない )がデフォルト。

つまり以下は true になる。

'SQL' = 'sql'

上記URLにあるようにこれをケース依存(純粋な文字列一致)にするなら、binary として比較すればいいです。

id:MrB

ありがとうございます。

=(イコール)ひとつだけでも奥が深いですね。

もっと勉強します。

2008/09/10 18:29:25
  • id:Mook
    多くのポイントいるか賞ありがとうございます。

    今回の情報を検索したキーワードは「MySQL 比較演算子 空白」で Google ではトップに出ています。
    ご参考までに。

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

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

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

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