【发布时间】:2013-07-31 16:00:54
【问题描述】:
请假设我在 Oracle 表中有一个 CLOB 字段,其中存储了包/过程/函数的创建脚本。
我想删除每行末尾的所有空格,但是:
a) DBMS_LOB.TRIM(CLOB 字段)是一个过程而不是一个函数; b) RTRIM (CLOB) 不会失败,但无法实现这一目标。
我该如何解决我的问题?
请注意,每行开头的空格对于缩进存储在 CLOB 字段中的 PL/SQL 源代码很有用,因此无需删除。
提前感谢您的帮助和合作。
【问题讨论】:
-
您是否考虑过打开文件,迭代每一行,修剪尾随空格并将 CLOB 写回表中?
-
我更喜欢 REGEXP_REPLACE 方法。 CHR(10) 后面的序列
(你想要多少次)必须简单地替换为 CHR(10)。我怎样才能做到这一点? -
从 MY_TABLE 中选择 REGEXP_REPLACE (MY_CLOB_FIELD, '\s*'||chr(10), chr(10));完全没有效率:(
-
您是要更新表格,还是只是删除选择时的空格?这张桌子有多大?
-
这张表是PL/SQL包、过程和函数的备份表,所以它每天都在增长。每行包含两个 CLOB:审查前的包/过程/函数的 CLOB,审查后的包/过程/函数的 CLOB。每个 CLOB 最多可以达到 50K 行,大约 80 个字符。