Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle10g-替换多托架返回_Sql_Oracle_Carriage Return - Fatal编程技术网

Sql Oracle10g-替换多托架返回

Sql Oracle10g-替换多托架返回,sql,oracle,carriage-return,Sql,Oracle,Carriage Return,查询返回的字符串类似于AAA[]AAA[]BBB[]BBB。我需要用分号替换四个连续的回车,而不是连续的两个回车。我试过了 replace(STRING,chr(13)||chr(13)||chr(13)||chr(13),';') 但它没有效果。任何帮助都将不胜感激。在linux/unix系统上使用CHR(10)。在Windows上,回车由两个字符组成CHR(10)| | CHR(13)。在linux上: SQL> WITH DATA AS ( 2 SELECT 'AAA

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

replace(STRING,chr(13)||chr(13)||chr(13)||chr(13),';')
但它没有效果。任何帮助都将不胜感激。

在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
由于可以在表达式中直接使用换行符,因此可以在所有具有换行符的平台/字符集上使用它(我建议使用此解决方案,因为它是可移植的):


检查您认为是回车符的四个字符的ascii码,如:
中选择ascii(子字符串(字符串,9,1))、ascii(子字符串(字符串,10,1))、ascii(子字符串(字符串,11,1))、ascii(子字符串(字符串,12,1))…和“回车符”是否指两个字符,即“行尾”在由两个ASCII值分别为13和10的字符组成的窗口中,或仅由一个字符组成的窗口中,实际回车符的ASCII值为13?要显示字符串的字符值,请使用转储函数:从…选择转储(字符串),此问题也发布在OTN上。解决方案是,“四个回车”不是四个回车,而是实际的Windows换行,即CHR(13)| | CHR(10)。这是一个chr(13)| chr(10)组合
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