sql - 我有一个 SQL 查询,需要在 oracle 中以特定格式写入输出
问题描述
我有一张表,其结构是 test(id , col1,col2)
现在我想得到 justcol1
和col2
in combination 的输出。例如表中的数据是 -
输出应该是 -->a,b,c,d,e,f
解决方案
当结果字符串太长,需要 CLOB 输出时,这里有一个 hack 可能会起作用。(“黑客”是一种被认为是 100% 正确的解决方案,但以不打算使用的方式使用某些工具。)黑客是为了使用json_arrayagg
,并向 Oracle “撒谎”,并指出输入是format json
为了不执行转义。
由于它使用 json 函数,因此只能在 Oracle 12.1 及更高版本中使用。
with
prep (lst) as (
select json_arrayagg(col1 || ',' || col2 format json
order by id returning clob)
from your_table
)
select substr(lst, 2, length(lst) - 2) as result
from prep
;
需要最后一个查询,因为 json 数组将包含一对方括号(即数组的 json 表示法)。该substr
函数从 CLOB 中删除第一个和最后一个字符。我更喜欢这个ltrim
and ,因为andrtrim
中的字符串可能已经包含括号,并且不应该被删除;只有第一个和最后一个字符(a [ 和 a ])应该从 json 数组中删除。col1
col2
推荐阅读
- azure-devops - 在 Azure DevOps 构建定义中下载最新版本的构建工件时未找到最新构建
- r - R:从基于连续变量的分类变量创建一个新的分类变量
- git - 如何将 TFS 拉取请求中的 Jenkins 作业与合并的分支进行排队
- php - PHP代码问题...数组中的数据但在HTML中显示记录时丢失了一些东西?
- python - Python Sphinx 包含指令:忽略包含文件中的标头
- python - 来自 SciKit-Learn 的 LabelEncoder 的 TypeError
- java - 如何在 gradle 构建期间从 java 类生成 JSON 模式?
- python - 使用 Python ElementTree 查找包含特定文本的“标题”xml 标记的父元素
- jsf - org.primefaces.component.chart.renderer.BarRenderer.encodeData 处的 NullPointerException
- amazon-web-services - Airflow DAG EMR EmrCreateJobFlowOperator 不执行任何操作