こんなお問い合わせが・・・
SELECT 1,2,3
FROM (SELECT CASE WHEN something THEN TO_CHAR(1)... END,2,3
FROM tables WHERE condtions)
WHERE 1 NOT LIKE 'String'
すべての列は varchar2 です。このクエリで Invalid Number エラーが発生し、内側の case ステートメントを指しています。内側のクエリは個別に正常に実行されます。外側の WHERE 条件を削除すると、クエリ全体が正常に実行されます。
これは SQL オプティマイザーで何かをしなければならないことは理解していますが、ここで何が間違っていて、どうすればこれを回避できますか? 文字列または外部選択ステートメントに To_CHAR を使用しても機能しません...
理解を深めるための更新、
SELECT COL1, COL2, COL3 FROM (
SELECT CASE WHEN LOGIC THEN TO_CHAR(1) ELSE TO_CHAR(0) END AS COL1,
COUNT(SOME_COL) AS COL2 , COUNT(SOME_COL2) AS COL3 FROM TABLES WHERE CONDTIONS
) WHERE COL1 NOT LIKE ‘0’
Oracle SQL オプティマイザーが干渉して上記のエラーを引き起こしているため、クエリを別の方法で作成する必要があると言われました。