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