これは 3 つの値を持つロジックです。http://en.wikipedia.org/wiki/Three-valued_logic を参照してください。また、SQL に固有の場合はhttp://en.wikipedia.org/wiki/Null_(SQL)を参照してください。
これは、値が意味する概念に従いますNULL
。この値は現在不明であり、将来何かで満たされる可能性があります。したがって、動作は、将来の非 null 値のすべてのケースで正しい方法で定義されます。例)true or unknown
はtrue
であり、unknown
( の真値NULL
) が後で真または偽に置き換えられても、結果は になりますtrue
。ただし、true and unknown
is は、 unknown` が後で何か false に置き換えられたunknown
場合に結果が true になるためです。unknown will later be replaced by a true value, while it will be false, if the
最後に、この動作は「非決定論的」ではありません。結果は明確に定義されており、各実行で同じ結果が得られるためです。これは定義上決定論的です。これは、他のほとんどのプログラミング言語で使用される標準のブール型の 2 値論理よりも少し複雑な方法で定義されています。非決定論的な関数はdbms_random.random
、呼び出されるたびに異なる値を返すため、または でありSYSTIMESTAMP
、複数回呼び出された場合にも異なる値を返します。