sql - 如何从包含逗号分隔条目的变量中创建(不同的)值列表?
问题描述
我在 APEX 报告(保存在名为 APR 的表中)中有一个用户生成的变量 (KEYWORDS),它允许用户输入多个(逗号分隔的)值。我想设置一个以前用于允许将来通过弹出 LOV 选择的不同值的列表。
我设法使用创建了一个不同的列表
SELECT distinct regexp_substr((select LISTAGG(KEYWORDS, ',') from APR), '[^,]+', 1, LEVEL) from dual
connect by regexp_substr((select LISTAGG(KEYWORDS, ',') from APR), '[^,]+', 1, LEVEL)
is not null
;
哪里select LISTAGG(KEYWORDS, ',') from APR
是:'test,test,TEST2,test,TEST2,test,TEST2,test3'
select keywords from APR
由6行组成:
test
test,TEST2
test,TEST2
test
TEST2
test3
我的问题是尝试在 Edit LOV 查询中实现这一点。
select (select distinct regexp_substr((select LISTAGG(KEYWORDS, ',') from APR), '[^,]+', 1, LEVEL) from dual
connect by regexp_substr((select LISTAGG(KEYWORDS, ',') from APR), '[^,]+', 1, LEVEL)
is not null) as display_value,
(select distinct regexp_substr((select LISTAGG(KEYWORDS, ',') from APR), '[^,]+', 1, LEVEL) from dual
connect by regexp_substr((select LISTAGG(KEYWORDS, ',') from APR), '[^,]+', 1, LEVEL)
is not null) as return_value
from APR
order by 1
此代码已在编辑 LOV 部分中成功验证,但弹出式 LOV 中未显示任何值。粘贴到 SQL 命令中,我收到以下错误消息: ORA-01427:单行子查询返回多行。
解决方案
您发布的查询无效;listagg
需要within group
子句。
无论如何:我建议您使用该查询(您可能已经正确编写)作为数据源,如下所示:
with t_data as
(select listagg(keywords, ',') within group (order by null) col
from apr
)
select col display_value,
col return_value
from t_data
order by col
推荐阅读
- asp.net-mvc - IIS Express URL 绑定未按配置绑定?
- sql-server - SSMS 错误“在预期条件的上下文中指定的非布尔类型的表达式,靠近 '('”
- reactjs - 代理错误:无法代理请求反应(EPROTO)nodejs 12.18.2
- html - 是否有任何 MySQL 选项可以及时启用不同的 DELETE?
- c# - C# 字符串数组 orderBy 重音字符问题
- fabricjs - fabric.js:如何设置选择框和控件的笔触粗细?
- python - 有没有办法使用网络抓取访问“/Click/xxxx”文件?
- discord.py - discord.py:计数之间的总和
- python - LCD开机显示垃圾
- ruby-on-rails - 如何创建具有多个参数的自定义 rake 任务?