首页 > 解决方案 > Oracle:从字符串中删除某些字符

问题描述

我们必须使用 SQL 或 PL/SQL 从 VARCHAR2 和 CLOB 数据类型中删除某些字符并加载到目标表中。

Oracle 中有一些可用的函数(例如 REGEXP_REPLACE 或 SUBSTR)可以使用。

但是,我们有大量的数据。

如果我们将数据提取到 Linux 主机并结合使用 TR ( /bin/tr ) 和 Oracle External Files 会更快吗?

标签: sqloracleplsql

解决方案


我通常使用TRANSLATE(参见:https ://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/TRANSLATE.html#GUID-80F85ACB-092C-4CC7-91F6-B3A585E3A690 )从一个字符串。但这在一定程度上取决于您要删除多少个字符。

以下示例旨在说明这一点。从输入字符串中删除字符“ D”和“ ”。E

SELECT TRANSLATE('ABCDEFG', '_DE', '_') FROM DUAL;

它返回“ ABCFG”。

' ABCDEFG' 是输入字符串。' _DE' 表示 ' D' 和 ' E' 被删除。


推荐阅读