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 行 [重复]

JDBC-SQL异常-用尽的结果集[重复]

批处理文件集变量不起作用[重复]

java.sql.SQLException:结果集开始之前[重复]

在 BigQuery 中展平嵌套和重复的结构(标准 SQL)

java - 如何使用java将sql结果集字段存储到单独的数组变量中?