查询返回类似AAA[][]AAA[][][][]BBB[][]BBB
的字符串。我需要用分号替换四个连续的回车符,而不是连续的两个回车符。我试过了
replace(STRING,chr(13)||chr(13)||chr(13)||chr(13),';')
但没有效果。任何帮助将不胜感激。
答案 0 :(得分:1)
在linux / unix系统上使用CHR(10)
。在Windows上,回车符由两个字符CHR(10)||chr(13)
组成。在linux上:
SQL> WITH DATA AS (
2 SELECT 'AAA
3
4 AAA
5
6
7
8 BBB
9
10 BBB' txt FROM dual
11 ) SELECT replace(txt, chr(10)||chr(10)||chr(10)||chr(10), ';') rep
12 FROM DATA;
REP
------------------------------
AAA
AAA;BBB
BBB
由于您可以直接在表达式中使用换行符,因此您可以使用换行符对所有平台/字符集进行操作(我建议使用此解决方案,因为它是可移植的):
SQL> WITH DATA AS (
2 SELECT 'AAA
3
4 AAA
5
6
7
8 BBB
9
10 BBB' txt FROM dual
11 ) SELECT replace(txt, '
12
13
14
15 ', ';') rep FROM DATA;
REP
--------------------------
AAA
AAA;BBB
BBB