这会在括号中生成一个正确的字符串并引用。
select '('||REPLACE('''Binnenstad Boerhaavedistrict''',' ',''',''')||')' from dual
即:
('Binnenstad','Boerhaavedistrict')
但是当我在IN
语句中使用它时,它会失败:
select dn.DISTRICTSNAAM
from DISTRICTNAAM dn
where dn.DISTRICTSNAAM in '('||REPLACE('''Binnenstad Boerhaavedistrict''',' ',''',''')||')'
没有错误,只是没有结果。
我的目的是从空格分隔的输入变量创建IN
列表。
但是,当我用带引号的逗号分隔字符串为变量提供它时,它似乎才起作用。
这是为什么?还是太动态了?
答案 0 :(得分:0)
问题是你的IN
与完整字符串而不是数组
where dn.DISTRICTSNAAM in ( full string )
代替
where dn.DISTRICTSNAAM in ( stringA, stringB)
答案 1 :(得分:0)
in
不会解析包含逗号分隔值的字符串。它只处理以逗号分隔的字符串列表。
in ('a', 'b', 'c')
没问题。
in ('''a''', ''b'', ''c''')
只会测试一个值。
in '(''a''', ''b'', ''c'')'
也只会测试一个值。
要执行您正在尝试的操作,您需要使用动态SQL。