今回はMySQLでのNULL安全等価演算子についてご紹介します。
NULL安全等価演算子とは<=>
のことで、見た目が宇宙船に似ていることからSpaceship Operator(宇宙船演算子)とも言われます。
※他言語でもあるんですが、返り値が違ったりするのでご注意ください。
まず、値の比較について見ていきます。
1
と1
を等価演算子で比較します。
MySQL> SELECT 1 = 1;
+-------+
| 1 = 1 |
+-------+
| 1 |
+-------+
結果は真の1
となりました。
次は1
と0
を比較してみましょう。
MySQL> SELECT 1 = 0;
+-------+
| 1 = 0 |
+-------+
| 0 |
+-------+
結果は偽の0
となりました。
今後は1
とNULL
を比較してみます。
MySQL> SELECT 1 = NULL;
+----------+
| 1 = NULL |
+----------+
| NULL |
+----------+
結果は偽の0
となるかと思いきや、NULL
となりました。
NULL
同士を比較するとどうでしょうか。
MySQL> SELECT NULL = NULL;
+-------------+
| NULL = NULL |
+-------------+
| NULL |
+-------------+
結果はNULL
となりました。
1
とNULL
の場合は0
、NULL
同士の場合は1
になって欲しいですよね。
そこで登場するのが、今回のNULL安全等価演算子(宇宙船演算子)です。
それを使うと次のようになります。
1
とNULL
の場合
SELECT 1 <=> NULL;
+------------+
| 1 <=> NULL |
+------------+
| 0 |
+------------+
NULL
同士の場合
SELECT NULL <=> NULL;
+---------------+
| NULL <=> NULL |
+---------------+
| 1 |
+---------------+
ということで、まさに欲しい結果が返ってきてくれます。
続いてサンプルデータを用いて、実際の事例をご紹介します。
続きを読む…»