コンテンツにスキップ

Null

出典: フリー百科事典『ウィキペディア(Wikipedia)』

Null使PascalNilPythonNoneVB.NETNothing使

 Null 0 /nʊl/  null  /nʌl/ [1]0 Null  /nʌl/ [2][3]

JISJIS X 3005-1:2014SQL 1(SQL/Framework)調P4 (Null Value)JIS X 3010:2003C調P4 (Null Character)[4][5]

nullnil[]Python[ 1]LISP()

語源[編集]


 nullus[1][6]nil  nihil [7]

 null 使 zero  empty null matrix  zero matrixnull set  empty setempty matrix 0null string  empty string[8][9]null0

ヌルポインタ[編集]

ポインタや参照が無効であることを示す。C言語では無効ポインタを表現するための特別な値として、処理系定義のNULLマクロが用意された[10]。Cの規格ではNULLポインタの内部数値は0とは規定されていないが、0をポインタ型にキャストするとヌルポインタになることは規定されているので、代表的な実装では以下のようになっている。

#define NULL    ((void*)0)

またC言語から派生したC++では、C言語から引き継いだNULLマクロ定義が存在するが、Cとは違ってvoid*から他の型へのポインタに暗黙変換することを禁止したため、C++03規格までは以下のように整定数0に等しかった。

#define NULL    0

int0C++11std::nullptr_tnullptr[11]NULL[12]

JavaC#C++null

[]


PythonNone2.4None

Rubynil[13]NilClass[14]

VB.NETNothing[15]

LISPNILcarcdrnilnilcarcdr

null[]


nullnullnullNullNULLnullnull

nullnullnull

Javanullnullnullnullnullnullnull[16]

ヌル文字[編集]

ヌル文字列[編集]

nullデバイス[編集]


nullnull

UNIXLinux/dev/nullMS-DOSMS WindowsNUL

データベースのNULL[編集]


NULLNACNULLNaN

NULL (Unknown)  (Not Applicable, Inapplicable) NULLNULLNULLF

 'UNKNOWN'0-199991231使使

NULLNULLNULLNULLNULLNULLNULLNULLNaNNULL

SQLNULL[]

NULL []


NULLNULL
NULL + 1
NULL / 0
NOT NULL
NULL AND TRUE
LENGTH(NULL)

NULL00NaNNaNNULLWHERENULLDELETEUPDATENULLIS NULL 使

NULLNULLNULLNULL

INNULL UNKNOWN UNKNOWN NULL Unknown NULL TRUEFALSE3
NULL = NULL
NULL <> NULL
NULL = 1
NULL <> 1
NULL < 1
NULL IN (1, 2, 3)
NULL IN (1, 2, NULL)

UNKNOWNUNKNOWNNULL

NULL
NULL AND FALSE
NULL OR TRUE

はそれぞれFALSE、TRUEである(NULL AND TRUE、NULL OR FALSE がNULLになるのとの違いに注意)。

Oracleは空文字列とNULLを区別しないため、NULL あるいは空文字列を含む演算で非標準な結果となることがある。例えば、文字列と NULL を連結すると本来は NULL になるが、Oracleでは文字列の値を変えない(ただし NULL 同士の連結は NULL になる)。

'A' || NULL    -- IS NULL, ただし Oracle では = 'A'
NULL || NULL    -- IS NULL

NULLを扱うための工夫[編集]

テーブルの各列には、NULLを保持できないと指定することができる。例えば、全ての行で必ず異なる値が含まれなければならないと指定されている列であっても、複数の行がNULLを保持できてしまう。そこで、この列にNULLを保持できないと指定すればこの問題が回避できる。

ソートでは、NULLはいかなる値よりも小さいとして扱われる(ただしOracleは逆にいかなる値よりも大きいとして扱われるが、オプションで変更できる)。しかし論理値でのソートが実装されていれば、以下のように IS (NOT) NULL を第1のソートキーに使ってNULLを先または後に変更できる。

ORDER BY col IS NOT NULL, col    -- NULLは最初
ORDER BY col IS NULL, col     -- NULLは最後

また、CASE式やCOALESCE関数(あるいはOracleならNVL関数も可)を使って、NULLに任意の値を割り当ててソートすることができる。以下の句はいずれも、colがNULLならば0を割り当ててソートする。

ORDER BY CASE WHEN col IS NULL THEN 0 ELSE col END
ORDER BY COALESCE(col, 0)
ORDER BY NVL(col, 0)    -- Oracleのみ

脚注[編集]

注釈[編集]

  1. ^ 証拠として例えばNone.__str__()のように参照できる。

出典[編集]



(一)^ abHow To Pronounce null

(二)^ Wikipedia Deutsch - Nullwert. 2019915

(三)^ StackExchange - German Language - null (zero) vs. NULL. 2019915

(四)^ C P57 Peter Prinz,Tony Crawford   

(五)^ 281  [1]III-22

(六)^ null adjective - Definition, pictures, pronunciation and usage notes.  Oxford University Press. 201662

(七)^ nil noun - Definition, pictures, pronunciation and usage notes.  Oxford University Press. 201662

(八)^  -  - IT e-Words

(九)^ 21.2 Validating Null and Empty Strings - Java Platform, Enterprise Edition: The Java EE Tutorial (Release 7)

(十)^ NULL - cppreference.com (C)

(11)^ nullptr - cpprefjp C++

(12)^ NULL - cppreference.com (C++)

(13)^  (Ruby 3.3 )

(14)^ class NilClass (Ruby 3.3 )

(15)^ Nothing  - Visual Basic | Microsoft Learn

(16)^ The Java® Language Specification Java SE 8 Edition

関連項目[編集]