正则表达式在 Oracle SQL 中删除开始和结束处的换行符

RegEx to remove new line feed at starting and ending in Oracle SQL

我的数据在字符串的开头和结尾包含大量换行符,这给理解数据带来了困难。示例数据如下所示。

'

sample text

new value

'

我尝试用空字符串替换 chr(10),但它删除了两行之间的换行,这是必需的。

我的代码

select REPLACE(a1, chr(10), ' ') from( select  '

Sample Text

New value

' as a1 from dual);

任何建议。

尝试使用 TRIM:

SELECT
    TRIM(CHR(10) FROM col)
FROM dual

TRIM 可以选择指定要从字符串的开头和结尾删除的字符。按照下面的简短演示查看实际效果。单击 here 查看如何使用 TRIM 和一些示例。

编辑: 如果你有一个 CLOB 列并且 TRIM 不起作用,那么我们仍然可以使用 REGEXP_REPLACE:

SELECT REGEXP_REPLACE(REGEXP_REPLACE(col, '^' || CHR(10) || '*', ''),
    CHR(10) || '*$', '') AS output
FROM dual

这是一个演示,显示 REGEXP_REPLACE 代替 TRIM 工作:

Demo

trim 或删除行 feed/carriage returns/tab 的另一种方法是使用 “翻译(column_name,chr(10)|| chr(13)|| chr(09),'')”。 这对我有用。