使用TRIM函数时Oracle SQL奇怪的行为

时间:2018-01-10 12:22:24

标签: regex oracle line-breaks

请找到我正在执行的两个sql查询及其结果。

  

代码1

Select TRIM(CHR(10) from Regexp_Replace('<html>
<body>
<div align="left"><font face="Arial"><span style="font-size:8pt">Select CPU test and&nbsp; run for 1 loop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></font></div>
</body>
</html>', '<[^>]+>','')) from dual;
  

结果

>Select CPU test and&nbsp; run for 1 loop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  

代码2

Select TRIM(CHR(10) from REGEXP_REPLACE(DS_DESCN,'<[^>]+>','')) from Table1 where ID = 123;

其中 DS_DESCN 是数据类型为 CLOB 的列,在此方案中, DS_DESCN 提供与{{1}中使用的完全相同的字符串(下面提供的字符串)。

Code 1
  

结果

<html>
<body>
<div align="left"><font face="Arial"><span style="font-size:8pt">Select CPU test and&nbsp; run for 1 loop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></font></div>
</body>
</html>

如果你同时观察两个结果,你可以看到> > >Select CPU test and&nbsp; run for 1 loop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; > > 的{​​{1}}在开始和结束时都有换行符。为什么会发生这种情况以及我应该对result进行哪些更改以提供Code 2

等结果

0 个答案:

没有答案