2012-04-20 3 views
3
select NVL(B.SEQID, A.LVL5_ID) LVL6_ID, NVL(B.NAME, ' ') LVL6_NAME, A.LVL5_ID 
FROM LVL5 A, ABC B WHERE A.LVL5_ID = B.LVL7 

上記のクエリは、私のシステム内のビューを定義するものです。ここではNVLが使われた理由を知りたいと思います。NVL機能

SEQIDは主キー列であり、nullにすることはできません。ここにNVLの必要性はありますか?

レコードが満足しない場合はnull B.SEQIDできる句を見つけることができる場所?(私はこのdoesntのメイクセンスを知っているが、私はちょうど聞きしました)

答えて

3

nvl関数は、B.SEQIDに含まれるすべてのnull値をA.LVL5_IDの値に置き換えます。

B.SEQIDがプライマリキーであると述べると、このNVLはプライマリキーとしてヌル値を含むことはできないため、クエリでは役に立たなくなります。ただし、一意キーには複数のnull値が含まれることがあります。

where句が一致しない場合、null値は返されず、フィードバックメッセージである「no rows selected」が返されます。

+0

ありがとう!理にかなっている – MozenRath

1

主キー制約は、ユニークキー制約であるプラスnullでない制約。したがって、その下にある列は必須です。だから、NVLを喜んで削除することができます。

よろしくお願いします。
Rob。

+0

ありがとう! – MozenRath

関連する問題