场景引入
假设,我们需要将原 FULL_CODE
列中的值:
FULL_CODE
----------
TREE
TREE.ANLYS
TREE.LOG_MGT
TREE.LOG_MGT.ERR_LOG
TREE.LOG_MGT.OPS_LOG
TREE.SYS_MGT
TREE.SYS_MGT.MENU_MGT
TREE.SYS_MGT.ROLE_MGT
替换为(即将根节点 TREE
改名为 ROOT
):
FULL_CODE
----------
ROOT
ROOT.ANLYS
ROOT.LOG_MGT
ROOT.LOG_MGT.ERR_LOG
ROOT.LOG_MGT.OPS_LOG
ROOT.SYS_MGT
ROOT.SYS_MGT.MENU_MGT
ROOT.SYS_MGT.ROLE_MGT
在 Oracle 中,我们可以使用 REPLACE
函数解决以上这类需要对特定列进行批量替换的问题。
Oracle / PLSQL: REPLACE 函数
Oracle / PLSQL 中 REPLACE
函数可用于将字符串中的某些字符替换为其它字符。
REPLACE
函数语法为:
REPLACE( string1, string_to_replace [, replacement_string] )
参数说明:
-
string1
- 需要替换的原字符串。 string_to_replace
-
string1
中需要替换的字符。
replacement_string
-
可选的。
string1
中出现的所有string_to_replace
都将被replacement_string
替换。如果省略了replacement_string
参数,则REPLACE
函数只删除所有出现的string_to_replace
,并返回结果字符串。
返回值:
REPLACE
函数会返回一个替换后的结果字符串。
适用版本
REPLACE
函数可用于以下版本的 Oracle / PLSQL:
- Oracle 12c
- Oracle 11g
- Oracle 10g
- Oracle 9i
- Oracle 8i
示例
查询
只修改查询结果:
SELECT REPLACE(T.FULL_CODE, 'TREE', 'ROOT')
FROM TABLE_NAME T
更新
批量更新表中的某个列中的所有值:
UPDATE TB_MENU T
SET T.FULL_MENU_CODE = REPLACE(T.FULL_MENU_CODE, 'TREE', 'ROOT')