'6218, 5577'
это строка, а не список значений.Так что если вы делаете select REPLACE('6218, 5577','''','''''') from dual;
, вы пытаетесь заменить одну цитату в вашей строке.так как он не существует в вашей строке, ничего не будет заменено.
результат, который вы выбрали, остается той же самой строкой, а не списком, как вы ожидаете.
, вам следует разделить запятуюстрока в строках.
вот один из способов сделать это
with tab as (
SELECT trim(regexp_substr('6218, 5577', '[^,]+', 1, LEVEL)) str
FROM dual
CONNECT BY instr('6218, 5577', ',', 1, LEVEL - 1) > 0
)
, чем вы можете использовать его на выбранном
with tab as (
SELECT trim(regexp_substr('6218, 5577', '[^,]+', 1, LEVEL)) str
FROM dual
CONNECT BY instr('6218, 5577', ',', 1, LEVEL - 1) > 0
)
select ...
from ...
WHERE dm."branch_id" IN (select str from tab );