MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのNULLセーフ等価演算子とは?比較演算子との違いをわかりやすく解説

MySQLのNULLセーフ等価演算子(<=>)とは

MySQLのNULLセーフ等価演算子は、記号「<=>」で表される演算子で、標準SQLの「IS NOT DISTINCT FROM」に相当する機能を持っています。通常の比較演算子「=」と同じように等価性の比較を行いますが、オペランド(被演算子)にNULLが含まれる場合の挙動が大きく異なる点が特徴です。

具体的には、以下のような違いがあります。

  • 通常の「=」演算子:オペランドのいずれか一方でもNULLの場合、結果はNULLを返す
  • NULLセーフ演算子「<=>」:両方のオペランドがNULLなら1(真)を返し、片方だけがNULLなら0(偽)を返す

実行例で確認する違い

実際にSQLを実行して、「<=>」と「=」の挙動の違いを見てみましょう。

mysql> Select 50 <=> 50, NULL <=> NULL, 100 <=> NULL;
+-----------+---------------+--------------+
| 50 <=> 50 | NULL <=> NULL | 100 <=> NULL |
+-----------+---------------+--------------+
|          1 |              1 |              0 |
+-----------+---------------+--------------+
1 row in set (0.00 sec)

mysql> Select 50 = 50, NULL = NULL, 100 = NULL;
+---------+-------------+------------+
| 50 = 50 | NULL = NULL | 100 = NULL |
+---------+-------------+------------+
|       1 |        NULL |       NULL |
+---------+-------------+------------+
1 row in set (0.00 sec)

結果の読み方

  • 「50 <=> 50」:どちらもNULLではなく同じ値のため、1(真)を返します。「=」も同様に1を返します。
  • 「NULL <=> NULL」:両方がNULLであるため、1(真)を返します。ここが最大のポイントで、「=」を使った場合はNULLが返されます。
  • 「100 <=> NULL」:片方だけがNULLのため、0(偽)を返します。「=」の場合はNULLを返します。

使い分けのポイント

NULL値を含むカラム同士を比較し、「NULL同士は一致しているものとみなしたい」場合には「<=>」演算子が便利です。例えば、結合条件やWHERE句でNULLの扱いを厳密に制御したいときに役立ちます。一方、NULLが含まれる比較の結果を「不明(NULL)」として扱いたい場合は、従来通りの「=」演算子を使用しましょう。

  1. TF(TransFlash)カードとは?microSDカードとの違いを徹底解説

    近年のスマートフォンは大容量化が進み、大量のデータやさまざまなアプリケーションを本体に保存できるようになりました。それでも容量が足りない場合に備え、多くの端末には外部ストレージのオプションが用意されており、microSDカードを挿入してストレージを拡張できます。そんな中、「TFカードとは何か?」「SDカードとどんな関係があるのか?」と疑問に感じている方も少なくありません。TF(TransFlash)はあまり知られていないメモリーカードの名称で、存在を知らないユーザーも多いのが実情です。本記事では、TFカードの概要から、microSDカードとの違いまでをわかりやすく解説します。TFカードとは?T

  2. localhostとは何か?127.0.0.1との違いをわかりやすく解説

    すべてのネットワーク機器が切断されていても、実はコンピュータは一種のネットワーク上で通信を行うことができます。これが「ループバック(loopback)」と呼ばれる仕組みです。Unixマシンは仮想ネットワークデバイスを通じて、自分自身に対してネットワーク通信を送受信できます。つまり、物理的なネットワークが機能していなくても、ネットワーク形式の通信が可能になるのです。 127.0.0.1とは? 127.0.0.1は、最も広く使われているループバックIPアドレスです。このアドレスは、ループバック専用として予約された1,600万個以上のIPアドレス群の一部に含まれます。ループバックを利用することで、コ