Oracle SQL 删除尾随的新行

问题描述

我正在 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)。或者,最后可能存在其他类型的空白。我给出的答案更简单,应该涵盖所有边缘情况。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...