MySQLのIS演算子とIS NOT演算子の使い方をわかりやすく解説
MySQLでは、IS演算子とIS NOT演算子を使用することで、ある値が特定のブール値(TRUE、FALSE、UNKNOWN)と一致するかどうかを判定できます。特にNULL値の扱いにおいて便利な演算子です。
IS演算子とは
IS演算子は、指定した値がブール値と一致するかどうかをテストします。構文は以下の通りです。
Val IS Boolean_val
- Val:テスト対象となる値です。
- Boolean_val:比較対象となるブール値で、TRUE、FALSE、UNKNOWN のいずれかを指定できます。
IS NOT演算子とは
IS NOT演算子は、IS演算子の否定形であり、指定した値がブール値と一致しないかどうかをテストします。構文は以下の通りです。
Val IS NOT Boolean_val
こちらも同様に、Boolean_valにはTRUE、FALSE、UNKNOWNのいずれかを指定します。
実際の使用例
以下のSQLステートメントを実行すると、各演算子の動作を確認できます。
mysql> Select 1 IS TRUE, 0 IS FALSE, NULL IS UNKNOWN; +-----------+------------+-----------------+ | 1 IS TRUE | 0 IS FALSE | NULL IS UNKNOWN | +-----------+------------+-----------------+ | 1 | 1 | 1 | +-----------+------------+-----------------+ 1 row in set (0.00 sec)
この結果から、「1はTRUEである」「0はFALSEである」「NULLはUNKNOWNである」という評価がすべて真(1)となっていることがわかります。
次に、IS NOT演算子を使った例を見てみましょう。
mysql> Select 1 IS NOT TRUE, 0 IS NOT FALSE, NULL IS NOT UNKNOWN; +---------------+----------------+---------------------+ | 1 IS NOT TRUE | 0 IS NOT FALSE | NULL IS NOT UNKNOWN | +---------------+----------------+---------------------+ | 0 | 0 | 0 | +---------------+----------------+---------------------+ 1 row in set (0.00 sec) mysql> Select 0 IS NOT TRUE, 1 IS NOT FALSE, NULL IS NOT UNKNOWN; +---------------+----------------+---------------------+ | 0 IS NOT TRUE | 1 IS NOT FALSE | NULL IS NOT UNKNOWN | +---------------+----------------+---------------------+ | 1 | 1 | 0 | +---------------+----------------+---------------------+ 1 row in set (0.00 sec)
最初のクエリでは、「1はTRUEではない」「0はFALSEではない」「NULLはUNKNOWNではない」という評価がすべて偽(0)になっています。一方、2番目のクエリでは「0はTRUEではない」「1はFALSEではない」が真(1)となり、「NULLはUNKNOWNではない」のみ偽(0)という結果になっています。
まとめ
ISおよびIS NOT演算子は、値がTRUE・FALSE・UNKNOWNのいずれかに該当するかを明示的に判定するための演算子です。通常の「=」や「!=」では正しく比較できないNULL値の判定にも対応できるため、条件分岐やデータ検証の場面で活用するとよいでしょう。
-
MySQLにおける「!=NULL」と「IS NOT NULL」の違いとは?
MySQLでは、値を!=NULLと比較すると、結果は必ずNULLになります。つまり、!=NULLという比較は意味を持ちません。NULLは「不明な値」を表すため、通常の比較演算子では判定できないのです。NULL値を判定するには、専用の演算子であるIS NOT NULLを使用します。ここでは、!=NULLとIS NOT NULLの違いを実際に確認するために、まずテーブルを作成します。テーブルの作成まず、次のコマンドでテーブルを作成します。mysql> create table DemoTable1970 (
-
C言語のprintf()における%n書式指定子とは?出力文字数を格納する特殊な機能を解説
C言語のprintf()における%n書式指定子とは? C言語には、%nという特殊な書式指定子が用意されています。一般的な書式指定子(%dや%sなど)が画面へ値を出力するのに対し、%nは何も出力しません。その代わり、対応する引数として渡されたポインタが指し示す変数に、「%nが出現するまでにprintf()が出力した文字数」を格納します。 ポイント: %n自体は画面に何も表示しません。文字列の出力には、別途printf()関数を呼び出して行います。 基本的な使用例 #include<stdio.h> int main() { int s; printf(The val