「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > SQL での NULL の処理

SQL での NULL の処理

2024 年 7 月 31 日に公開
ブラウズ:405

NULL Handling in SQL

導入

SQL での NULL 値の処理は、すべてのデータベース専門家が理解する必要がある基本的な側面です。 NULL は、データベース テーブル内の欠落値または未定義の値を表します。データ操作の整合性と正確性を確保するには、これらの値を正しく処理することが重要です。この記事では、SQL における NULL の概念、その意味、および NULL 値を処理するためのさまざまな戦略について詳しく説明します。

SQL における NULL を理解する

SQL の

NULL は、データ値がデータベースに存在しないことを示すために使用される特別なマーカーです。これは、空の文字列またはゼロ値と同等ではありません。代わりに、NULL は値が存在しないことを示します。データベース テーブルに NULL 値が存在すると、特に比較、集計、結合などの操作を実行する場合、クエリの結果に影響を与える可能性があります。

NULL の主な特徴

  1. 不定値: NULL は不明な値または不定値を表します。
  2. 非比較: NULL を含む比較 (=、 など) は、TRUE または FALSE ではなく、常に NULL を返します。
  3. 関数での特殊な処理: 多くの SQL 関数は、NULL 値を処理するときに特定の動作を行います。

SQL での NULL の操作

NULL のチェック

値が NULL かどうかを確認するには、IS NULL または IS NOT NULL 演算子を使用します。例えば:

SELECT * FROM employees WHERE manager_id IS NULL;

このクエリは、マネージャーがいないすべての従業員を取得します。

NULL と比較演算子

標準の比較演算子 (=、!=、

SELECT * FROM employees WHERE manager_id = NULL;

このクエリは、一部の manager_id 値が NULL であっても、行を返しません。代わりに、
を使用する必要があります。

SELECT * FROM employees WHERE manager_id IS NULL;

集計では NULL

SUM、AVG、COUNT などの集計関数は、NULL 値を異なる方法で処理します。たとえば、SUM と AVG は NULL 値を無視しますが、COUNT は明示的に指定されていれば NULL 値をカウントできます。

SELECT SUM(salary) FROM employees;  -- NULL values are ignored
SELECT AVG(salary) FROM employees;  -- NULL values are ignored
SELECT COUNT(manager_id) FROM employees;  -- NULL values are ignored
SELECT COUNT(*) FROM employees WHERE manager_id IS NULL;  -- Counts only NULL values

結合での NULL の処理

結合を実行する場合、NULL 値を使用すると予期しない結果が生じる可能性があります。たとえば、INNER JOIN では結合条件に NULL 値を含む行が除外されますが、LEFT JOIN ではそれらの行が含まれます。

SELECT e.name, d.department_name
FROM employees e
LEFT JOIN departments d ON e.department_id = d.id;

このクエリは、LEFT JOIN により、部門を持たない従業員を含むすべての従業員を取得します。

SQL クエリでの NULL の処理

COALESCEの使用

COALESCE 関数は、式のリスト内の最初の非 NULL 値を返します。 NULL をデフォルト値に置き換えるのに便利です。

SELECT name, COALESCE(manager_id, 'No Manager') AS manager_id
FROM employees;

このクエリは、NULL の manager_id 値を文字列「No Manager」に置き換えます。

IFNULL または ISNULL の使用

多くの SQL 言語では、NULL 値を処理するための IFNULL (MySQL) や ISNULL (SQL Server) のような関数が提供されています。

-- MySQL
SELECT name, IFNULL(manager_id, 'No Manager') AS manager_id FROM employees;

-- SQL Server
SELECT name, ISNULL(manager_id, 'No Manager') AS manager_id FROM employees;

NULLIFの使用

NULLIF 関数は、2 つの引数が等しい場合に NULL を返します。それ以外の場合は、最初の引数を返します。ゼロ除算エラーを回避するのに役立ちます。

SELECT price / NULLIF(quantity, 0) AS unit_price
FROM products;

このクエリは、数量がゼロの場合に NULL を返すことにより、ゼロによる除算を防ぎます。

NULL 処理のベスト プラクティス

  1. デフォルト値の定義: テーブルを作成するときに、NULL の出現を最小限に抑えるために列のデフォルト値を定義します。
  2. 適切な関数を使用する: COALESCE、IFNULL、NULLIF などの関数を利用して、NULL 値を効果的に処理します。
  3. データの検証: データ検証ルールを実装して、望ましくない NULL 値を防止します。
  4. データベース設計を検討する: クエリとパフォーマンスへの影響を考慮して、NULL 値を適切に処理するようにデータベース スキーマを設計します。

結論

SQL で NULL 値を処理するには、さまざまな操作における NULL 値の動作を注意深く検討し、理解する必要があります。適切な SQL 関数を使用し、ベスト プラクティスに従うことで、データベース クエリが正確で信頼性の高い結果を生成することを保証できます。 NULL のチェック、集計の実行、テーブルの結合のいずれの場合でも、データの整合性を維持し、SQL 操作で望ましい結果を達成するには、NULL を適切に処理することが重要です。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/kellyblaire/null-handling-in-sql-1mp2?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3