COALESCE
ANSI-92
の一部であるより現代的な関数です 標準。
NVL
Oracle
です 具体的には、80
で導入されました 基準が存在する前のことです。
2つの値の場合、それらは同義語です。
ただし、実装方法は異なります。
NVL
COALESCE
の間、常に両方の引数を評価します 通常、NULL
以外の最初のコードが見つかると評価を停止します (シーケンスNEXTVAL
などのいくつかの例外があります ):
SELECT SUM(val)
FROM (
SELECT NVL(1, LENGTH(RAWTOHEX(SYS_GUID()))) AS val
FROM dual
CONNECT BY
level <= 10000
)
これはほぼ0.5
で実行されます SYS_GUID()
を生成するため秒 の、1
にもかかわらず NULL
ではない 。
SELECT SUM(val)
FROM (
SELECT COALESCE(1, LENGTH(RAWTOHEX(SYS_GUID()))) AS val
FROM dual
CONNECT BY
level <= 10000
)
これは、1
NULL
ではありません 2番目の引数は評価されません。
SYS_GUID
は生成されず、クエリは即座に実行されます。