SQL使用变量集以防万一[重复]
Posted
技术标签:
【中文标题】SQL使用变量集以防万一[重复]【英文标题】:SQL Use variable set in case [duplicate] 【发布时间】:2021-07-07 13:06:09 【问题描述】:我想在查询中使用输入变量。 输入变量应该是一个集合。
例如:
这是一个有效的查询:
select * from table_1
where key_1 in ('1', '2', '3')
但我想用输入变量替换集合
select * from table_1
where key_1 in (:input_set)
然后我将输入设置为: :input_set = ('1, 2, 3')
但是我找不到办法让它工作。
【问题讨论】:
请标记您使用的 RDBMS。 这个列表来自哪里?没有设置这样的实体,但您可以使用集合类型。它们应该以不同的方式使用,并且不允许您在没有特殊代码的情况下通过一些“手动输入”来传递它们。 【参考方案1】:感谢老程序员。
我使用了来自Oracle: using IN clause with text field?的部分答案
select * from table_1
where key_1 in (
when pzgr_id in (
select regexp_substr(str, '[^,]+',1,level)
from (select :input_set str from dual)
connect by level <= regexp_count(str,'[^,]+')
)
使用输入集'1,2,3'。 重要的是不要在 1、2、3 之间使用空格。
【讨论】:
以上是关于SQL使用变量集以防万一[重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用 GROUP BY 和 ORDER BY pl/sql 获取结果集的 N 到 M 行 [重复]
java.sql.SQLException:结果集开始之前[重复]