在Oracle SQL中删除换行符

11

目前,在测试表的地址列中,我有以下格式的数据:

12th street

Test avenue

Test_City

但是在输出结果中,我需要它按照以下格式显示:

12th street Test avenue Test_City。

请问有谁能告诉我使用的查询以按所需方式显示它。


你的表格和字段名称是什么? - Matt
嗨,Matt,实际上我没有分别用于街道、大道和城市的三列数据。整个数据都在地址列中。 - manju
1
也许你只需要 select replace(address, chr(10), ' ') from customer,但是你的问题有点不清楚... - Erich Kitzmueller
4个回答

16

你可以尝试这个:

select regexp_replace(your_address,'[[:space:]]',' ') from your_tab; 

你在尝试做什么? - Ankit Bajpai
@Ankit:将换行符替换为空格:select regexp_replace('12th street Test avenue Test_City','[[:space:]]', ' ') from dual 得到 12th street Test avenue Test_City - Cyryl1972
4
不知道为什么上面的回答会被踩,其实是一个很好的解决方案。我唯一的建议是将 [[:space:]] 改成 [[:space]]+ 或者更简单的 \s+,这样多个换行符(例如)就会被替换为一个空格。 - David Faber
这个解决方案完美地解决了我们的一个重大问题。我们正在创建Ext JS字符字符串,但出现了换行符和回车符的问题。如果没有这个解决方案,我就会被埋没,所以我非常同意David Faber的看法——这是一个很棒的解决方案。我仍然需要将其包含在相关的SQL查询中,或者(更好的选择)只需在代码后端使用C# Regex,但是……直接修改Oracle中的数据完全解决了这个问题。谢谢,Cyryl 1972。 - user1585204

8

只需从字符串中删除chr(13)和chr(10):

declare
   teststring   varchar2 (32767) := ' This is the value

that I chose';
begin
   dbms_output.put_line (teststring);
   dbms_output.put_line (replace (replace (teststring, chr (13), ''), chr (10), ' '));
end;

结果如下:
 This is the value

that I chose
 This is the value  that I chose

我在文本中放入两个回车,因此需要两个空格。


6

试试这个:

translate(' example ', chr(10) || chr(13) || chr(09), ' ') 

上述代码将替换所有换行符(chr(10))、制表符(chr(09))和回车符(chr(13))为一个空格 (' ')。
只需将' example '替换为您希望删除字符的字段名称。

0
另一种解决方案是:

select trim(chr(13) FROM trim(chr(10) FROM your_column)) from your_table


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接