11

この質問は、私が見ていたデータベース試験からのものなので、実際の状況で使用できるものではないかもしれません...

次の有効な SQL ステートメントはどのような出力を生成しますか? あなたの答えを説明しなさい!

SELECT (NULL = NULL);

ステートメントの出力を簡単に生成できます。

学校=>選択(ヌル=ヌル);
 ?桁?
----------

(1行)

psql 8.4.11では、しかし、これがどのように、そしてなぜこれが答えなのかはわかりません...括弧内の式を評価しようとして、真/偽を出そうとすると推測していましたが、明らかにそうではありません。

なぜそれがそうであるように振る舞うかについてのヒントはありますか?

ありがとう

4

2 に答える 2

10

NULL「不明な値」の略です。値が true なのか false なのか、それ以外なのかはわかりません。

では、2 つの未知の値を比較すると、答えは何になるでしょうか? UnknownA は UnknownB と等しいか?

答え?わからない...

SQL Server の例を次に示します。

IF (NULL = NULL)
  PRINT 'Equals'

IF (NULL != NULL)
  PRINT 'Not Equals'


IF (NULL IS NULL)
  PRINT 'IS'

IF (NULL IS NOT NULL)
  PRINT 'IS NOT'

印刷される唯一のもの:IS

于 2012-08-24T10:58:57.203 に答える
1

予想される答えは だと思いますNULL。それがMySQLの機能です。実際、これは PostgreSQL が返すものでもあります。おそらく、SQL クライアントは、返される値がNULL.

ただし、MS SQL サーバーにはブール型がないため、ブール式の結果だけを選択することはできません。したがって、MS SQL の結果はエラーになります。

質問のポイントは、SQL の NULL ロジックの理解度を確認することです。と比較するときは、の代わりに演算子=を使用する必要があります( MySQL でオプションが true に設定されている場合を除く)。ISNULLANSI_NULLS

于 2012-08-24T10:59:23.257 に答える