

岡田 康介
名前:岡田 康介(おかだ こうすけ) ニックネーム:コウ、または「こうちゃん」 年齢:28歳 性別:男性 職業:ブロガー(SEOやライフスタイル系を中心に活動) 居住地:東京都(都心のワンルームマンション) 出身地:千葉県船橋市 身長:175cm 血液型:O型 誕生日:1997年4月3日 趣味:カフェ巡り、写真撮影、ランニング、読書(自己啓発やエッセイ)、映画鑑賞、ガジェット収集 性格:ポジティブでフランク、人見知りはしないタイプ。好奇心旺盛で新しいものにすぐ飛びつく性格。計画性がある一方で、思いついたらすぐ行動するフットワークの軽さもある。 1日(平日)のタイムスケジュール 7:00 起床:軽くストレッチして朝のニュースをチェック。ブラックコーヒーで目を覚ます。 7:30 朝ラン:近所の公園を30分ほどランニング。頭をリセットして新しいアイデアを考える時間。 8:30 朝食&SNSチェック:トーストやヨーグルトを食べながら、TwitterやInstagramでトレンドを確認。 9:30 ブログ執筆スタート:カフェに移動してノートPCで記事を書いたり、リサーチを進める。 12:30 昼食:お気に入りのカフェや定食屋でランチ。食事をしながら読書やネタ探し。 14:00 取材・撮影・リサーチ:街歩きをしながら写真を撮ったり、新しいお店を開拓してネタにする。 16:00 執筆&編集作業:帰宅して集中モードで記事を仕上げ、SEOチェックやアイキャッチ作成も行う。 19:00 夕食:自炊か外食。たまに友人と飲みに行って情報交換。 21:00 ブログのアクセス解析・改善点チェック:Googleアナリティクスやサーチコンソールを見て数字を分析。 22:00 映画鑑賞や趣味の時間:Amazonプライムで映画やドラマを楽しむ。 24:00 就寝:明日のアイデアをメモしてから眠りにつく。
はじめに
データベースを使うとき、計算や比較をする場面は日常的にあります。そんなとき nullif という小さな機能が役に立つことがあります。この記事では、nullifとは何か、どう使うのかを中学生にもわかる言葉で丁寧に解説します。
nullifとは何か
nullifは SQL というデータベース言語の関数の一つです。二つの式を比較して、もし同じ値だった場合には NULL を返し、そうでなければ最初の式の値をそのまま返します。ここでの NULL は「値が無いこと」を示す特別なものです。
要するに 二つの式が等しいときだけ NULL を返し、そうでなければ最初の式の値を返す機能です。等しいかどうかの判定結果は TRUE か FALSE ではなく NULL でもないことに注意してください。実務ではこの挙動をうまく使うことで計算の安全性を高めることができます。
基本的な使い方
nullif の基本的な書き方はとてもシンプルです。NULLIF(expression1, expression2) のように書き、expression1 と expression2 を比較します。結果は次のようになります。
- expression1 が expression2 と等しい場合 → NULL
- expression1 が expression2 と等しくない場合 → expression1 の値
注意点として、いずれかの式が NULL の場合の挙動は場合によって異なることがあります。一般には NULL と比較しても TRUE にはならず、結果は expression1 の値になります(この点はデータベース製品ごとに微妙に挙動が異なることがあります)。
実務での具体例
1 行の計算で割り算の分母を安全にしたいときに使うのが代表的な例です。例えば a を b で割るとき、b が 0 のときはエラーになることがあります。<span>a / NULLIF(b, 0) と書くと、b が 0 のときは NULL が返されて計算結果が NULL になります。これによりエラーを防ぐことができます。
別の例として、ある列の値が別の列と同じ場合にその行を特別扱いしたい場合があります。その場合は NULLIF を使って同値を NULL に置き換え、後から COALESCE などと組み合わせてデフォルト値を設定することができます。
わかりやすい具体例と表
以下の表は NULLIF の挙動を直感的に示します。
| 結果 | |
|---|---|
| NULLIF(5, 5) | NULL |
| NULLIF(5, 3) | 5 |
| NULLIF(NULL, 5) | NULL |
よくある誤解を解く
誤解1:NULLIF は比較演算子のように使える。
正解:NULLIF は関数であり、比較結果が TRUE になるかどうかではなく、等しい場合 NULL を返します。
誤解2:NULLIF が返す NULL は必ず「欠損値」ではなく「単なる NULL 値」です。計算や集計に影響するので、後続処理での扱いに気をつけましょう。
重要ポイントのまとめ
重要ポイントとして、nullif は「二つの式が等しいとき NULL を返す」「等しくないときは expression1 の値を返す」点をしっかり覚えましょう。これを理解することで、データの前処理や安全な計算に役立ちます。
まとめ
nullif は SQL の中でよく使われる便利な関数です。等しい場合に NULL を返す性質を活かして、割り算の分母の安全対策やデータの前処理、条件付きの値の置換など、さまざまな場面で活躍します。使い方を習得すれば、データベースを扱う際の柔軟性と安全性が高まります。
nullifの同意語
- NULLIF
- 2つの値が等しい場合に NULL を返す SQL の組み込み関数。等しくない場合は最初の値をそのまま返します。主に、比較結果が同じときに NULL を挿入して次の処理での NULL 値を扱いやすくする目的で使われます。
- CASE_WHEN_EQUAL_THEN_NULL_ELSE_VALUE
- CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END の形で NULLIF の機能を再現する、最も一般的な代替表現です。2つの値を比較し、等しければ NULL、そうでなければ最初の値を返します。
- CASE_EXPRESSION_AS_ALTERNATIVE_TO_NULLIF
- CASE 式は NULLIF の代替として機能します。複数条件の判定にも対応でき、同様の結果を得ることができます。
- CONDITIONAL_NULL_RETURN_EXPRESSION
- 条件付きで NULL を返す表現の総称です。一般に、2値の比較結果に応じて NULL を返す設計思想を指します。
- EQUALS_COMPARISON_NULL_RETURN_CONCEPT
- 等価チェックに基づき NULL を返す動作を指す概念名。等しい場合 NULL、そうでなければ元の値を返すという挙動を意味します。
nullifの対義語・反対語
- IFNULL
- 第一引数が NULL の場合、第二引数を返します。NULLIF が NULL を返す状況とは“逆の動き”に近い機能です。
- ISNULL
- SQL Server などで使われる同様の機能。第一引数が NULL の場合、第二引数を返します。
- NVL
- Oracle の NULL 値置換関数。第一引数が NULL の場合、第二引数を返します。
- COALESCE
- 最初の非 NULL 値を返す。複数の引数のうち、先頭の NULL でない値を返し、全部 NULL なら NULL を返します。NULLIF の結果を回避する“補完”の考え方です。
- CASE_ELSE_DEFAULT
- CASE 式を使い、条件に応じて値を返す。NULL の場合にデフォルト値を返すように書くと、NULL になってしまう場面を避けられます(実務的な対義の使い方)。
- IS_NOT_NULL
- 値が NULL でないことを判定する表現。NULLIF の結果が NULL のときと対照的に、値を常に使える状態を作ります。
- IS_NOT_DISTINCT_FROM
- NULL を含む場合でも“等しい”と見なす比較演算子。NULLIF の“NULL を返す”挙動とは異なり、 NULL 同士も比較で意味を持たせる考え方です。
- DEFAULT_VALUE_FALLBACK
- NULL のときデフォルト値へ置換する考え方。COALESCE などと組み合わせると、より強力に“NULLを避ける”実装になります。
nullifの共起語
- NULL
- SQLにおける値が未知/欠損/未設定の特別な値。NULLIFの結果がNULLになる主な原因にもなる。
- COALESCE
- NULLを含む複数の式の中から、最初にNULLでない値を返す関数。NULLIFと組み合わせて「NULLを避ける」場面でよく使われる。
- IFNULL
- NULLを別の値に置換する関数。主に MySQL などで使われ、NULLIFと組み合わせてNULLの扱いを整えることがある。
- NVL
- Oracleで使われるNULL置換関数(COALESCEのデータベース別実装の一つ)。
- IS NULL
- 式がNULLかどうかを判定する条件式。WHERE句やCASE節で頻繁に用いられる。
- IS NOT NULL
- 式がNULLでないことを判定する条件式。NULLの排除に使われる。
- CASE
- 条件に応じて異なる値を返す制御構文。NULLIFの結果がNULLのときの代替処理にも利用されることがある。
- WHEN
- CASE文の分岐条件の一部。
- THEN
- CASE文における条件成立時の返り値。
- ELSE
- CASE文で他の条件が成立しない場合の返り値。
- PostgreSQL
- PostgreSQLデータベースでのNULL処理・NULLIFの挙動が代表的に見られる環境。
- MySQL
- MySQLデータベースで使われるNULL処理関数(例: IFNULL)が身近な環境。
- Oracle
- OracleデータベースでのNULL処理(NVLなど)が代表的。
- SQL
- データベースを操作する標準言語。NULLIFはSQLの関数の一つ。
- SELECT
- データを取得するSQL文。NULLIFはSELECTの計算式としてよく使われる。
- WHERE
- データの絞り込み条件を指定する句。NULLIFの結果を条件に活用する場面が多い。
- 引数
- NULLIFは2つの式を引数として受け取る。
- 式
- 計算や参照の単位。NULLIFの引数は式で成り立つ。
- 比較
- 2つの式の等価比較を行うのがNULLIFの核心要素。
- 等しい
- 2つの式が等しい場合にNULLを返す点が特徴。
- 返り値
- NULLIFの実行結果として返される値。
- デフォルト値
- NULLが返る場合の代替としてCOALESCE等で設定する値のこと。
- データベース
- データを格納・管理するシステム。NULLの扱いはDB設計で重要。
- データ整合性
- NULLの扱いを正しく設計することでデータ品質を保つ。
nullifの関連用語
- NULLIF
- 二つの式が等しい場合に NULL を返し、そうでなければ最初の式の値を返す、SQL の関数。NULL の扱いをシンプルにして、NULL の生成を伴う演算を回避するのに使われます。
- COALESCE
- 引数の中で最初に NULL でない値を返す関数。すべて NULL のときは NULL。複数の式を順番に評価して NULL を回避したい場合や、デフォルト値の設定によく使われます。
- IFNULL
- 二引数の関数で、最初の引数が NULL でなければそれを、NULL なら二番目の引数を返します。主に MySQL などで使われ、COALESCE の二引数版として覚えると良いです。
- IS NULL
- 式が NULL であるかを判定する条件。例: SELECT * FROM テーブル WHERE カラム IS NULL。
- IS NOT NULL
- 式が NULL でないことを判定する条件。例: SELECT * FROM テーブル WHERE カラム IS NOT NULL。
- CASE
- 条件に応じて値を返す式。CASE WHEN 条件 THEN 値1 ELSE 値2 END の形で使い、NULLIF の結果を分岐に利用する場面などで活用します。
- IIF
- SQL Server などで使われる CASE の短い書き方。条件が真なら第一の値、偽なら第二の値を返します。
- NVL
- Oracle で使われる NULL 値置換関数。第一引数が NULL なら第二引数を、そうでなければ第一引数を返します。
- NVL2
- Oracle の拡張関数。第一引数が NULL かどうかで、第二引数と第三引数のどちらを返すかを選択します。
- NULL-safe 等価
- NULL を含む比較を「等価」とみなす考え方。通常 NULL は比較結果が UNKNOWN になりますが、NULL-safe な比較では NULL 同士も等しいと扱う場合があります。
- MySQL の NULL 安全等価演算子 (<=>)
- 演算子 <=> を使うと、左右どちらかが NULL の場合でも NULL かどうかを判定できます。NULL を含む場合の比較で便利です。
- NOT NULL
- 列の値が NULL にならないようにする制約。データの必須性を表現します。
- DEFAULT
- 列のデフォルト値の設定。INSERT で値を省略した場合や NULL を指定した場合に自動的に適用される値です。
- 三値論理
- SQL が採用する TRUE / FALSE / UNKNOWN の三つの値の論理。NULL は通常 UNKNOWN を表します。
- NULL 値
- 値が「未知」または「存在しない」状態を表す特別な値。NULL は空白やゼロとは異なり、値が欠落していることを示します。
- IS NOT DISTINCT FROM
- PostgreSQL などで使われる、NULL を含む比較を等価とみなす構文。NULL 同士も等しいと判断します。
- IS DISTINCT FROM
- IS NOT DISTINCT FROM の反対。NULL を含む場合の非等価を判断します。



















