Oracle:从字符串中删除某些字符

yxyvkwin  于 2023-08-03  发布在  Oracle
关注(0)|答案(2)|浏览(215)

我们必须使用SQL或PL/SQL从VARCHAR 2和CLOB数据类型中删除某些字符,然后将其加载到目标表中。
Oracle中有一些可用的函数(例如REGEXP_REPLACE或SUBSTR)。
然而,我们有大量的数据。
如果我们将数据提取到Linux主机中,并结合使用TR(/bin/tr)和Oracle External Files,是否会更快?

jvlzgdj9

jvlzgdj91#

我通常使用TRANSLATE(参见:https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/TRANSLATE.html#GUID-80 F85 ACB-092 C-4CC 7 - 91 F6-B3 A585 E3 A690)从字符串中删除字符。但这取决于你想删除多少个字符。
以下示例旨在说明这一点。字符'D'和'E'将从输入字符串中删除。

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

字符串
它返回'ABCFG'。
'ABCDEFG'是输入字符串。'_DE'表示'D'和'E'已删除。

tzdcorbm

tzdcorbm2#

您也可以使用REPLACE,请参阅示例:

select REPLACE('AB 123456','AB','YZ') from dual;

字符串
返回:'YZ 123456'
在下一个例子中,REPLACE函数的第三个参数被省略了,因此相应的字符串从原始字符串中删除。

select REPLACE('AB 123456','AB ') from dual;


返回:'123456'
请参阅Oracle SQL Language Reference - REPLACE上的完整文档

相关问题