简化替换 oracle 函数
Simplifying a replace oracle function
使用替换函数 DML 简化更新。
是否有简化的方法来转换下面的代码(示例)
update A
set TERMS = trim(replace(TERMS,'-',','))
/
update A
set TERMS = trim(replace(TERMS,'A','B'))
/
update A
set TERMS = trim(replace(TERMS,'C','D'))
/
update A
set TERMS = trim(replace(TERMS,'E','F'))
/
update A
set TERMS = trim(replace(TERMS,'111','222'))
/
update A
set TERMS = trim(replace(TERMS,'......','......'))
将此代码转换为单个脚本。
好吧,您可以嵌套调用 UPDATE
:
update A
set TERMS = trim(replace(replace(
replace(replace(
replace(TERMS, '-', ','), 'A', 'B'), 'C', 'D'), 'E', 'F'), '111', '222'))
另一个明显的可能选项是正则表达式替换。但是,这在这里没有多大帮助,因为即使我们可以轻松地在一个正则表达式中用短语表达所有目标,每个目标都有一个单独的替换。
你这样替换的链:
update A set terms=trim(replace(replace(terms,'A','B'),'C','D'));
您可以嵌套 replace()
或使用 translate()
。如果您的字符串全部是字母数字和一些其他字符:
update a
set TERMS = trim(replace(translate(terms, '- ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', ', BBDDFFGHIJKLMNOPQRSTUVWXYZ0123456789'), '111', '222'))
您可以使用 TRANSLATE
来更改单个字符(并且不需要指定完整的字母表,只需指定您正在翻译的字符)并且可以嵌套 REPLACE
语句:
update A
SET TERMS = TRIM(
REPLACE(
REPLACE(
TRANSLATE( TERMS, 'ACE-', 'BDF,' ),
'111',
'222'
),
'......',
'......'
)
)
db<>fiddle here
使用替换函数 DML 简化更新。
是否有简化的方法来转换下面的代码(示例)
update A
set TERMS = trim(replace(TERMS,'-',','))
/
update A
set TERMS = trim(replace(TERMS,'A','B'))
/
update A
set TERMS = trim(replace(TERMS,'C','D'))
/
update A
set TERMS = trim(replace(TERMS,'E','F'))
/
update A
set TERMS = trim(replace(TERMS,'111','222'))
/
update A
set TERMS = trim(replace(TERMS,'......','......'))
将此代码转换为单个脚本。
好吧,您可以嵌套调用 UPDATE
:
update A
set TERMS = trim(replace(replace(
replace(replace(
replace(TERMS, '-', ','), 'A', 'B'), 'C', 'D'), 'E', 'F'), '111', '222'))
另一个明显的可能选项是正则表达式替换。但是,这在这里没有多大帮助,因为即使我们可以轻松地在一个正则表达式中用短语表达所有目标,每个目标都有一个单独的替换。
你这样替换的链:
update A set terms=trim(replace(replace(terms,'A','B'),'C','D'));
您可以嵌套 replace()
或使用 translate()
。如果您的字符串全部是字母数字和一些其他字符:
update a
set TERMS = trim(replace(translate(terms, '- ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', ', BBDDFFGHIJKLMNOPQRSTUVWXYZ0123456789'), '111', '222'))
您可以使用 TRANSLATE
来更改单个字符(并且不需要指定完整的字母表,只需指定您正在翻译的字符)并且可以嵌套 REPLACE
语句:
update A
SET TERMS = TRIM(
REPLACE(
REPLACE(
TRANSLATE( TERMS, 'ACE-', 'BDF,' ),
'111',
'222'
),
'......',
'......'
)
)
db<>fiddle here