10 /何かは、10に「何か」がいくらになるかを数えていることを意味します。この場合、10に「何もない」がどれだけあるかを数えています。これは無限大です。不明です。1= 1が等しくないため、NULLは偽です。なし
NULLIF関数は、2つのパラメーターを受け入れます。最初のパラメーターが2番目のパラメーターと等しい場合、NULLIFはNullを返します。それ以外の場合は、最初のパラメーターの値が返されます。NULLIF(value1、value2)
NVL NVL関数は、2つのパラメーターを受け入れます。最初の非NULLパラメータを返します。すべてのパラメータがNULLの場合はNULLを返します。
この条件付きの結果も確認してください。
この「nullは不明な真理値に等しい」という命題は、SQL3VLに不整合をもたらします。大きな問題の1つは、nullの基本的なプロパティである伝播のプロパティと矛盾することです。ヌルは、定義上、すべてのSQL式を介して伝播します。ブール真理値にはこのプロパティがありません。SQL:1999の次のシナリオを検討してください。このシナリオでは、2つのブール真理値が複合述語に結合されています。SQL 3VLの規則に従い、この記事の前半で示した3VL真理値表に示されているように、次のステートメントが成り立ちます。
(TRUEまたはUNKNOWN)→TRUE
(FALSE AND UNKNOWN)→FALSE
ただし、nullは伝播するため、nullをUNKNOWNとして扱うと、SQL3VLで次の論理的な不整合が発生します。
(TRUE OR NULL)→NULL(= UNKNOWN)
(FALSE AND NULL)→NULL(= UNKNOWN)
SQL:1999標準では、この不整合に対処する方法が定義されておらず、実装によって結果が異なる可能性があります。これらの不整合とベンダーからのサポートの欠如のために、SQLブールデータ型は広く受け入れられませんでした。現在、ほとんどのSQL DBMSプラットフォームは、ブール型データを格納するための独自のプラットフォーム固有の推奨事項を提供しています。SQLのPostgreSQL実装では、null値がすべての不明な結果を表すために使用され、次の評価が行われることに注意してください。
(TRUEまたはNULL)→TRUE
(FALSE AND NULL)→FALSE
(FALSEまたはNULL)ISNULL→TRUE
(TRUE AND NULL)ISNULL→TRUE