今日はなにの日。

気になったこと勉強になったことのメモ。

今日は、MySQLの何これ演算子の日。

とある日

Twitterみてて、MySQLに変わった演算子があるというツイートを見た。

どのツイートか忘れたのだが・・・。

ってことで、面白うそうなので調べてみた。

変わってる演算子

変わった演算子ってのが、<=>です。

MySQLのドキュメントに普通に載ってた。

dev.mysql.com

ドキュメントに載ってる、<=>の説明が、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製品にないので移植性が低い

OraclePostgreSQLを調べたところ、比較演算子<=>は存在しない。

メリット

  • NULL比較できる

メリットらしいメリットはないですが。

使用用途を自分なりに考えてみたが、<=>を使用するより、NULLが発生しないテーブル構成やSQLを組み立てるほうがいいかなと思った。

NULLを比較する関数あるから、使わないよなと思う・・・。

てかこれ、なんて呼ぶんだろう・・・。