Oracle10g-替换多个回车符

时间:2013-02-18 10:15:17

标签: sql oracle carriage-return

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

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

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

1 个答案:

答案 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