问题描述
我正在 oracle sql 中创建一个 ssrs 表单,我需要在其中列出一个地址。新行必须保留在地址中,但是我找不到在地址末尾删除新行的方法。
我所拥有的示例:
10 Donkey Kong,London,XX1 1XX
new line
new line
我想要的例子:
10 Donkey Kong,XX1 1XX
Oracle 版本:11g - 11.2 版
我已经试过了:
-
trim(both chr(10) from (trim(both chr(13) from a.address))
- 没有任何区别 -
substr(a.address,1,length(translate(a.address,'d'||chr(10)||chr(13),'d')))
- 翻译检查整个地址中有多少空格,子字符串只返回地址的一部分,因为它切割的比它应该的多
谢谢
解决方法
找到答案:D
正则表达式来救援。
regexp_replace(a.address,'[' || chr(10) || chr(13) || ' ]+$','')
我仍然想知道为什么修剪不起作用。有什么想法吗?
,您可以在此处使用 REGEXP_REPLACE
和模式 \s+$
此处:
UPDATE yourTable
SET address = REGEXP_REPLACE(address,'\s+$','');
我可以推测您的修剪方法失败的几个原因。首先,也许不是每个列值都有 CRLF (CHR(10) || CHR(13)
)。相反,它可以有一个 Linux 行结尾,即 CHR(13)
。或者,最后可能存在其他类型的空白。我给出的答案更简单,应该涵盖所有边缘情况。