SQLの比較演算子
WHEREで条件を指定する際に必要となる比較演算子について調べました〜。
比較演算子
- a = b (a と b は等しい)
- a <=> b (a と b は等しい)
- a != b (a と b は等しくない)
- a <> b (a と b は等しくない)
- a < b (a は b よりも小さい)
- a > b (a は b よりも大きい)
- a <= b (a は b よりも小さいか等しい)
- a >= b (a は b よりも大きいか等しい)
だいたいRubyと同じですが、(a と b は等しい)(a と b は等しくない)という比較演算子が2つある。。。
Rubyの<=>は大小比較して左辺のが大きかったらプラスを返して、左辺のが小さかったらマイナスを返して、等しかったら0を返す的なメソッドだった気がするので使い方がちょっと違いそう。。。
= と <=> 、!= と <> の違い
以下のようなeventsテーブルがあるとします。
= の場合
= だとNULLと等しいかの比較ができないようでした。
SELECT * FROM events WHERE date = NULL;
何も取得できませんでした。
<=>の場合
<=> だとNULLと等しいか比較し、NULLであるレコードを返してくれました!
SELECT * FROM events WHERE date <=> NULL;
!= の場合
SELECT * FROM events WHERE date != NULL;
何も取得できませんでした。
<> の場合
SELECT * FROM events WHERE date <> NULL;
こちらも何も取得できませんでした。。。
感想その他
= と <=> の違いは分かりましたが、!= と <> の違いがよく分かりませんw
記号による比較演算子以外にも比較できる構文があるようなので、後日調べていきます!