gpt4 book ai didi

oracle - Oracle PL/SQL 中的 RTRIM(CLOB 字段)

转载 作者:行者123 更新时间:2023-12-04 04:47:28 25 4
gpt4 key购买 nike

请假设我在 Oracle 表中有一个 CLOB 字段,我在其中存储了包/过程/函数的创建脚本。

我想删除所有空白 在每一行的末尾 ,但是:

a) DBMS_LOB.TRIM(CLOB 字段)是一个过程而不是一个函数;
b) RTRIM (CLOB) 不会失败,但无法实现这一点。

我该如何解决我的问题?

请注意,每一行开头的空格对于 CLOB 字段中存储的 PL/SQL 源代码的缩进很有用,因此它们不必被删除。

预先感谢您的友好帮助与合作。

最佳答案

要删除每行末尾的空格,您可以使用 regexp_replace()正则表达式函数:

regexp_replace(col, '\s+('||CHR(10)||'|$)', chr(10)) 

这是一个示例(注意: replace 函数仅用于突出显示空格):
with t1(col) as(
select to_clob('begin '||chr(10)||chr(32)||chr(32)||'something is going on here'||chr(32)||chr(32)||chr(10)|| 'end'||chr(32)||chr(32))
from dual
)
select replace(col, ' ', '_') as with_spaces
, replace(
regexp_replace(col, '\s+('||CHR(10)||'|$)', chr(10))
, ' '
, '_'
) as without_spaces
from t1

结果:
WITH_SPACES                           WITHOUT_SPACES
---------------------------------------------------------------------
begin__ begin
__something_is_going_on_here__ __something_is_going_on_here
end__ end

关于oracle - Oracle PL/SQL 中的 RTRIM(CLOB 字段),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17965107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com