1

今学期、オンラインでデータベース設計コースを受講していますが、SQL を使用するのはこれが初めてです。私はコミュニケーションの学位を取得して卒業しましたが、自分自身を助けるために特定のコンピューター サイエンスのクラスを受講しています。Microsoft SQL Server 2008 を使用していますが、演習の最後の問題で困惑しています。最初の 6 つは簡単でした (基本的な選択関数、結果の順序付け、テーブルの名前を変更するためのエイリアスの使用など) が、最後の 1 つは null 値を処理します。

それは述べています:

Invoices テーブルの PaymentDate 列に無効な値があるかどうかを判断する SELECT ステートメントを記述します。PaymentDate が有効であるためには、未払いの残高がある場合は null 値である必要があり、未払いの残高がない場合は null 以外の値である必要があります。これらの条件をテストする WHERE 句に複合条件をコーディングします。

どこから始めればよいのかもわかりません。ハハ。私は通常、教室の設定でよりよく学びますが、私のスケジュールではこのコースではそれができないため、説明があれば役に立ちます! どんな助けでも大歓迎です!

デイブ D.


それで、どれが正しいですか?2つの異なる答えがある場合、それを分解するのは難しいです:) 休みの日に私は教授のオフィスに行き、彼女が私に直接説明できるようにします笑

4

2 に答える 2

1

すでに間違った回答が投稿されているため、これについて説明します。

PaymentDateこれは、 または のいずれかBalanceDueが nullであるという論理の問題です。SQL では、式で NULL をテストしますIS NULL

したがって、このwhere句は次のようになります。

where (PaymentDate is null and BalanceDue is not null) or -- this is the first clause
      (PaymentDate is not null and BalanceDue is null)    -- this is the second clause

その他の NULL 値 (=、<>、<、<=、>、>=、または in) との比較では、FALSE として解釈される NULL ブール値が返されます。

頑張って SQL を学んでください。

于 2013-02-21T22:26:50.970 に答える
1

以下のコードは、PaymentDate が無効なレコードを選択します。

SELECT * FROM Invoices WHERE (PaymentDate is not null and BalanceDue is not null) or (PaymentDate is null and BalanceDue is null)
于 2013-02-21T22:20:37.877 に答える