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が使用された理由を知りたいと思います。

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

where句を満たすレコードが見つからない場合、B.SEQIDをnullにすることはできますか?(これは意味がないことはわかっていますが、質問する必要がありました)

4

2 に答える 2

3

nvl 関数が行うことは、B.SEQID で検出されたすべての null 値を A.LVL5_ID の値に置き換えることです。

B.SEQID が主キーであることを示すと、主キーには null 値を含めることができないため、クエリでこの NVL が役に立たなくなります。ただし、一意のキーには複数の null 値を含めることができます。

where 句に一致するものがない場合、null 値は返されず、フィードバック メッセージである「行が選択されていません」が返されます。

于 2012-04-20T07:35:00.943 に答える
1

主キー制約は、一意キー制約と not null 制約です。したがって、その下の列が必須であることを保証します。したがって、NVL を問題なく削除できます。

よろしく、
ロブ。

于 2012-04-20T07:33:45.710 に答える