如何替换特殊字符然后在oracle中换行

Posted

技术标签:

【中文标题】如何替换特殊字符然后在oracle中换行【英文标题】:How to replace special characters and then break line in oracle 【发布时间】:2021-04-12 15:27:32 【问题描述】:

这就是我在 Oracle 12c 中获得结果的方式

Id Date Range
1 [ "2019-01-07","2019-02-17","2019-03-17"]

我想要它

Id Date Range
1 2019-01-07
1 2019-02-17
1 2019-03-17

我尝试了替换功能,但它在开始或结束时都有效 我想删除 [ ] 和 "

【问题讨论】:

是否需要为日期输入字符串中的每个日期返回一行?还是在结果列中有换行符的一行?结果中的Date Rangecolumn 应该是日期类型吗? 【参考方案1】:

由于您的 Oracle 版本是 12,因此您可以在当前输出上使用 JSON 函数来获得所需的输出。您当前的输出是一个有效的 JSON 字符串数组,您需要做的就是提取它们。像这样的:

with
  current_output (id, date_range) as (
    select 1, '["2019-01-07","2019-02-17","2019-03-17"]' from dual
  )
select co.id, t.date_range
from   current_output co
       cross apply
       json_table(co.date_range, '$[*]' columns date_range path '$') t
;

ID DATE_RANGE     
-- ---------------
 1 2019-01-07     
 1 2019-02-17     
 1 2019-03-17 

【讨论】:

感谢您的解决方案。 :) 当我添加一个像 Date Range1 这样的新列以及 Date Range 时,结果将作为笛卡尔积出现。有什么东西可以去掉笛卡尔积吗? @swanandkulkarni - 不知道你的意思。我了解您又添加了一列,类似于您拥有的那一列。但是,期望的输出是什么?您使用什么查询可以得到笛卡尔积?你肯定修改了查询——我写的那个甚至没有触及另一列。

以上是关于如何替换特殊字符然后在oracle中换行的主要内容,如果未能解决你的问题,请参考以下文章

使用 XMLELEMENT Oracle 时如何替换 ' 或任何特殊字符

hive sql 中换行字符的替换

记事本怎么换行

Oracle中特殊字符&和'的处理方案

如何让在Html中特殊字符不被转义

Oracle中,特殊字符(如回车换行等)的拼接