-1

查询返回字符串,如AAA[][]AAA[][][][]BBB[][]BBB. 我需要用分号替换四个连续的回车,而不是连续的两个回车。我试过了

replace(STRING,chr(13)||chr(13)||chr(13)||chr(13),';')

但它没有效果。任何帮助,将不胜感激。

4

1 回答 1

1

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
于 2013-02-18T11:06:11.960 回答