サーチ…


前書き

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