- - PR -
全件取得とWHERE指定のSQLを1つのDataAdapterで完結したい
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-06-11 13:12
たしか、データベースではtrue/falseの2値ではなく、true/false/unknown(「不明」の意)の3値だったと思います。 で、この判断文にNULLを入れると、 null IS NULL OR (USERID = null) → TRUE OR unknown → unknown → 結果不定 と、なるんじゃないかなぁ・・・っと。 なお、私のは「RDB研究館」で教えて頂いた方法です。また、この方法ですと、USERIDがPrimary Key宣言されていると思いますが、せっかくのインデックスが使用されません。式を使用しているのでインデックスが使用できません。インデックスを使いたい場合は、文を分けるしかありません。 [ メッセージ編集済み 編集者: Jitta 編集日時 2004-06-11 13:19 ] | ||||||||
|
投稿日時: 2004-06-11 14:44
NAL-6295です。
@USERIDがNULLの時 例えば、USERID = nullが、unknownだったとしても、 null IS NULLの方でTRUEが成立しますので、結果TRUEになり、全件取得します。 @USERIDがNULLで無い時、 @USER IS NULLはFALSEとなり、(USERID = @USERID)で成立したレコードのみ取得します。 | ||||||||
|
投稿日時: 2004-06-11 15:14
すみません、「TRUE OR UNKNOWNはTRUE」ということに対しての疑問でした。FALSE OR UNKNOWNはUNKNOWNなので、「UNKNOWNでは?」と思った次第です。 『Oracle9i SQLリファレンス』を確認したところ、TRUE OR UNKNOWNはTRUEでした。紛らわしい。。。(念のため、Books onlineで、SQL Serverの動きを確かめておくことをお勧めします>だいまるさん) |