25

SQLのWikipediaページには、SQLのブール論理に関するいくつかの真理値表があります。[1]ウィキペディアのページはSQL:2003標準を提供しているようです。

等号演算子(=)の真理値表は、SQL:2003ドラフトのIS演算子とは異なります。

また、ウィキペディアの記事には、「IS NULL」(<null述語>)は特殊なケースであると記載されています。

SQL:2003には、AND、NOT、ORなどの通常の演算子である「IS」演算子があるようです。ただし、<null述語>はまだ存在します。

ISが通常のブール演算子であるのに<null述語>があるのはなぜですか?型の強制なしにブール値以外の値で「ISNULL」構文を使用できることを確認するためですか?「=NULL」を使用することはお勧めしませんか?

SQL:2011標準の動作は異なりますか?

[1]:SQLに関するウィキペディア

[2]:SQL:2011ドラフトPDFページ335

[3]:SQL:2003ドラフト PDFページ397

4

2 に答える 2

24

それは私にとって新しいものです。

私がそれを正しく読んだ場合、文法はデータ型, ,<boolean value expression>でのみ使用するための 3 つの述語を定義します。booleanIS TRUEIS FALSEIS UNKNOWN

Trueこれらは、またはにのみ評価されるという点で、同等の対応するものとは異なりますFalse。することはありませんUnknown。つまり、UNKNOWN = TRUEに評価されますUNKNOWNが、UNKNOWN IS TRUEに評価されFalseます。

との完全な真理値表をIS以下=に示します。

+---------+-------+-------+---------+
|   IS    | TRUE  | FALSE | UNKNOWN |
+---------+-------+-------+---------+
| TRUE    | TRUE  | FALSE | FALSE   |
| FALSE   | FALSE | TRUE  | FALSE   |
| UNKNOWN | FALSE | FALSE | TRUE    |
+---------+-------+-------+---------+

とは対照的に

+---------+---------+---------+---------+
|    =    |  TRUE   |  FALSE  | UNKNOWN |
+---------+---------+---------+---------+
| TRUE    | TRUE    | FALSE   | UNKNOWN |
| FALSE   | FALSE   | TRUE    | UNKNOWN |
| UNKNOWN | UNKNOWN | UNKNOWN | UNKNOWN |
+---------+---------+---------+---------+
于 2012-03-22T15:57:57.330 に答える
5

上記のポスターが言ったように、null = null正しくありません。NULL(false)を返します

null比較の場合は、IS NULLまたはを使用する必要がありますIS NOT NULL

于 2012-03-22T15:10:03.187 に答える