sql - SQL 使用变量集以防万一
问题描述
我想在查询中使用输入变量。输入变量应该是一个集合。
例如:
这是一个有效的查询:
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')
但是我找不到让这个工作的方法。
解决方案
感谢老程序员。
我使用了来自: Oracle:使用 IN 子句和文本字段的部分答案?
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 之间使用空格。
推荐阅读
- flutter - 如何在颤振上共享特定页面
- python - 通过插入单个数字来获得最大可能数字的有效算法
- android-emulator - Fedora 33 上的 Android 模拟器分段错误(核心转储)
- javascript - 更改 JS 窗口对象名称会自动发生
- c++ - 使用私有析构函数破坏对象
- python - 服务中的 Python 子进程
- javascript - React - 样式化的组件返回一个 [object Object]
- python - Floyd-Warshall algorithm on GPU using numba
- php - 不要在某个时刻写入 COOKIEFILE
- angular - 我是否正确理解什么是 .subscribe()?(角8)