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 の何が問題なのか分かりますか?