今日は、MySQLの何これ演算子の日。
とある日
Twitterみてて、MySQLに変わった演算子があるというツイートを見た。
どのツイートか忘れたのだが・・・。
ってことで、面白うそうなので調べてみた。
変わってる演算子
変わった演算子ってのが、<=>
です。
MySQLのドキュメントに普通に載ってた。
ドキュメントに載ってる、<=>
の説明が、NULL 安全等価演算子らしく。
なにこれ・・・。
下に行くと、もっと詳細な説明が載ってた。
NULL - 安全等価。この演算子では、= 演算子のように等価比較が実行されますが、 両方のオペランドが NULL であれば、NULL でなく 1 が返され、 一方のオペランドが NULL の場合は、NULL でなく 0 が返されます。
使用例も載ってた。
mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL; -> 1, 1, 0 mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL; -> 1, NULL, NULL
<=>考察
<=>
の使い道って、なにかあるのかわからないので考え見た。
デメリット
- 他のDBMS製品にないので移植性が低い
OracleやPostgreSQLを調べたところ、比較演算子に<=>
は存在しない。
メリット
- NULL比較できる
メリットらしいメリットはないですが。
〆
使用用途を自分なりに考えてみたが、<=>
を使用するより、NULLが発生しないテーブル構成やSQLを組み立てるほうがいいかなと思った。
NULLを比較する関数あるから、使わないよなと思う・・・。
てかこれ、なんて呼ぶんだろう・・・。