サーチ…
前書き
SQLのNULL
は、プログラミングと同様に、文字通り「無」を意味します。 SQLでは、「価値の欠如」として理解するのが簡単です。
空の文字列''
や数字0
などの空白の値と区別することが重要です。どちらも実際にはNULL
ではありません。
また、 NULL
を引用符で囲まないように注意することも重要です。これは、テキストを受け入れる列では許可されていNULL
ではなく、エラーや不正なデータセットを引き起こす可能性のある'NULL'
などです。
クエリでNULLをフィルタリングする
WHERE
ブロックでNULL
をフィルタリングするための構文(つまり、値がないこと)は、特定の値のフィルタリングとは少し異なります。
SELECT * FROM Employees WHERE ManagerId IS NULL ;
SELECT * FROM Employees WHERE ManagerId IS NOT NULL ;
NULL
は何にも等しくないので、等価演算子= NULL
または<> NULL
(または!= NULL
)を使用すると、 WHERE
によって拒否されるUNKNOWN
の真理値が常に得られ!= NULL
。
WHERE
は、条件がFALSE
またはUKNOWN
であるすべての行をフィルタリングし、条件がTRUE
行のみを保持しFALSE
。
表のNULL可能な列
テーブルを作成するときには、カラムをヌル可能またはヌル可能でないと宣言することができます。
CREATE TABLE MyTable
(
MyCol1 INT NOT NULL, -- non-nullable
MyCol2 INT NULL -- nullable
) ;
デフォルトでは、 NOT NULL
制約を明示的に設定しない限り、すべての列(主キー制約内の列を除く)はNULL可能です。
NULL
を指定できない列にNULL
を代入しようとすると、エラーが発生します。
INSERT INTO MyTable (MyCol1, MyCol2) VALUES (1, NULL) ; -- works fine
INSERT INTO MyTable (MyCol1, MyCol2) VALUES (NULL, 2) ;
-- cannot insert
-- the value NULL into column 'MyCol1', table 'MyTable';
-- column does not allow nulls. INSERT fails.
フィールドをNULLに更新する
フィールドをNULL
設定すると、他の値とまったく同じように動作しNULL
。
UPDATE Employees
SET ManagerId = NULL
WHERE Id = 4
NULLフィールドを持つ行の挿入
たとえば、電話番号を持たずマネージャを持たない従業員をEmployeesの例の表に挿入するとします。
INSERT INTO Employees
(Id, FName, LName, PhoneNumber, ManagerId, DepartmentId, Salary, HireDate)
VALUES
(5, 'Jane', 'Doe', NULL, NULL, 2, 800, '2016-07-22') ;
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow