将 Oracle DB 中的字符串列表转换为数字

Muh*_*lik 2 oracle oracle-apex

我使用 Oracle Apex Shuttle 字段将表 ID 作为外键保存到另一个表中like(3:4:5)。现在我想在sql查询中使用这些IDS使用INClause。我已替换:,usingreplace函数,但它显示

没有找到数据

信息。

当我使用静态值时,以下查询工作正常。

select * from table where day_id IN(3,4,5)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用

select * from table where id IN(Select id from table2)
Run Code Online (Sandbox Code Playgroud)

它显示没有找到数据。

Cri*_*n_I 7

1:2:3:4据我了解,您有一个想要在子句中使用的列表IN;您可以将列表转换为单独的值,如下所示:

select regexp_substr('1:2:3:4','[^:]+', 1, level) as list from dual
connect by regexp_substr('1:2:3:4', '[^:]+', 1, level) is not null; 
Run Code Online (Sandbox Code Playgroud)

这将返回:

List
1
2
3
4
Run Code Online (Sandbox Code Playgroud)

然后你可以简单地将它添加到你的查询中,如下所示:

SELECT *
FROM TABLE
WHERE day_id IN
    (SELECT regexp_substr('1:2:3:4','[^:]+', 1, level) AS list
    FROM dual
        CONNECT BY regexp_substr('1:2:3:4', '[^:]+', 1, level) IS NOT NULL
    );
Run Code Online (Sandbox Code Playgroud)