Вы правы, но спасибо, что поделились этим удивительно плохим кодом.
(SELECT (',' || REPLACE('OWN, JO', ' ', NULL) || ',') b FROM DUAL)
- совершенно ненужный скалярный подзапрос. Может быть заменено на
',' || REPLACE('OWN, JO', ' ', NULL) || ','
Однако, поскольку этот фрагмент имеет только литералы, его можно заменить следующим результатом:
,OWN,JO,
и да, может показаться, что весь INSTR может быть заменен предложенным вами кодом, если только aao.AcctRoleCd не может содержать 'N, J' или что-то подобное, в этом случае исходный код и ваш код получат разные результаты. Я серьезно сомневаюсь, что это проблема.
С уважением, Рагу