查询返回字符串,如AAA[][]AAA[][][][]BBB[][]BBB
. 我需要用分号替换四个连续的回车,而不是连续的两个回车。我试过了
replace(STRING,chr(13)||chr(13)||chr(13)||chr(13),';')
但它没有效果。任何帮助,将不胜感激。
查询返回字符串,如AAA[][]AAA[][][][]BBB[][]BBB
. 我需要用分号替换四个连续的回车,而不是连续的两个回车。我试过了
replace(STRING,chr(13)||chr(13)||chr(13)||chr(13),';')
但它没有效果。任何帮助,将不胜感激。
CHR(10)
在 linux/unix 系统上使用。在 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