1

NVL が直接 SELECT では正常に機能するのに、INDEX では機能しない理由を理解しようとしています。以下は、INDEX を作成する前に完全に機能する方法を示しています (columnn foo は varchar2 です)。

SELECT id,foo FROM bar WHERE foo IS NULL;
1001
1002

SELECT id, NVL("FOO", 'null') FROM bar WHERE foo IS NULL;
1001    null
1002    null

ここで INDEX を作成しようとしているので、NVL を SELECTS に入れる必要はありません。

CREATE INDEX "BUZ_UTV3"."IX_NULL_FOO" 
ON "BUZ_UTV3"."BAR" (NVL("FOO", 'null')) 
TABLESPACE "TEST01_BUZUTV3";

しかし、元の SELECT を再実行すると、期待される「null」文字列が得られません。

SELECT id,foo FROM bar WHERE foo IS NULL;
1001
1002

私はおそらく何かを誤解しています。INDEX の何が問題なのか分かりますか?

4

2 に答える 2