人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: MrB
●カテゴリ:コンピュータ
✍キーワード:MySQL データ 仕様 比較
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Mook
●100ポイント ベストアンサー

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

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


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

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

◎質問者からの返答

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

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

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


2 ● b-wind
●100ポイント

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

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

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

つまり以下は true になる。

'SQL' = 'sql'

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

◎質問者からの返答

ありがとうございます。

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

もっと勉強します。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ