gpt4 book ai didi

oracle - 将 "IN"子句与来自 Oracle SQL 中 replace() 函数输出的逗号分隔字符串一起使用

转载 作者:行者123 更新时间:2023-12-04 05:34:30 24 4
gpt4 key购买 nike

我有一个逗号分隔的字符串,我想在语句的“IN”子句中使用它。
例如:100,101,102

由于 In 和 "IN"子句我必须引用单个字符串,所以我使用了替换函数:
例如: select ''''||replace('100,101,102',',',''', ''')||'''' from dual;

上面的查询有效,但是,当我尝试使用上面的输出作为“IN”子句的输入时,它不返回任何数据。我只受 SQL 语句的限制,所以我不能使用 PL/SQL 代码。请帮忙。

select * from employee where employee_number in (
select ''''||replace('100,101,102',',',''', ''')||'''' from dual);

以上是行不通的。请让我知道我缺少什么。

最佳答案

这种情况下的一般方法是将逗号分隔的列表解析为 Oracle 集合并在您的 SQL 语句中使用该集合。 Tom Kyte 在他关于 variable IN lists 的讨论中有一个这样的例子。 .

假设您从该线程创建 myTableType 类型和 in_list 函数,您应该能够做到

SELECT *
FROM employee
WHERE employee_number IN (
SELECT *
FROM TABLE( in_list( p_your_comma_separated_list ) )
)

关于oracle - 将 "IN"子句与来自 Oracle SQL 中 replace() 函数输出的逗号分隔字符串一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4672545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com