我们必须使用SQL或PL/SQL从VARCHAR 2和CLOB数据类型中删除某些字符,然后将其加载到目标表中。Oracle中有一些可用的函数(例如REGEXP_REPLACE或SUBSTR)。然而,我们有大量的数据。如果我们将数据提取到Linux主机中,并结合使用TR(/bin/tr)和Oracle External Files,是否会更快?
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'将从输入字符串中删除。
TRANSLATE
D
E
SELECT TRANSLATE('ABCDEFG', '_DE', '_') FROM DUAL;
字符串它返回'ABCFG'。'ABCDEFG'是输入字符串。'_DE'表示'D'和'E'已删除。
ABCFG
ABCDEFG
_DE
tzdcorbm2#
您也可以使用REPLACE,请参阅示例:
REPLACE
select REPLACE('AB 123456','AB','YZ') from dual;
字符串返回:'YZ 123456'在下一个例子中,REPLACE函数的第三个参数被省略了,因此相应的字符串从原始字符串中删除。
'YZ 123456'
select REPLACE('AB 123456','AB ') from dual;
型返回:'123456'请参阅Oracle SQL Language Reference - REPLACE上的完整文档
'123456'
2条答案
按热度按时间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
'将从输入字符串中删除。字符串
它返回'
ABCFG
'。'
ABCDEFG
'是输入字符串。'_DE
'表示'D
'和'E
'已删除。tzdcorbm2#
您也可以使用
REPLACE
,请参阅示例:字符串
返回:
'YZ 123456'
在下一个例子中,
REPLACE
函数的第三个参数被省略了,因此相应的字符串从原始字符串中删除。型
返回:
'123456'
请参阅Oracle SQL Language Reference - REPLACE上的完整文档