我正在尝试编写这样的Oracle 12c SQL语句:
select * from table1 where col1 in (*dynamicvalue*)
我希望动态值是以下SQL的结果:
select col2 from table2 where rowid = 1
这可能吗? Col2包含如下值的列表:'val1','val2','val3'
谢谢
答案 0 :(得分:2)
您可以拆分字符串并执行查询,而不是dynamic-sql。要拆分字符串,请使用Promise.all([
fetch("api.com/things"),
fetch("api2.com/otherthings"),
fetch("api3.com/yetotherthings")
])
.then(res=> {
//do something with res[0], res[1], res[2]
})
。
regexp_substr
答案 1 :(得分:0)
为什么不这样做?
select t1.*
from table1 t1
where t1.col1 in (select col2 from table2 where rowid = 1);
编辑:
在单个列中存储值列表是一个糟糕的主意,我错误地解释了这个问题。我将“值列表”作为存储在不同行中的值。为什么?因为这是存储数据的正确方法。将列列表存储在分隔列表中并不是SQLish。
尽管如此,我们有时会遇到其他人非常糟糕的设计决策。如果你遇到这种情况,你可以使用这样的查询:
select t1.*
from table1 t1
where exists (select 1
from table2 t2
where rowid = 1 and
',' || t2.col2 || ',' like '%,' || t1.col1 || ',%'
);