Oracle替换函数之replace和translate
一、replace函数
replace函数的作用是将源目标中指定字符串替换为相应字符,举例如下:
(1)将"jisuanji"字符串中的ji替换为1;
SQL> select replace('jisuanji','ji',1) from dual;
REPLACE('JISUANJI','JI',1)
--------------------------
1suan1
说明:首先在'jisuanji'字符串中寻找'ji'这个字符串,如果寻找到,则用1替换,否则保持 原样输出。
(2)将"jisuanji"字符串中的js替换为1;
SQL> select replace('jisuanji','js',1) from dual;
REPLACE('JISUANJI','JS',1)
--------------------------
jisuanji
说明:'jisuanji'这个字符串中没有找到'js'这个连续的字符,所以保持原样输出;
二、translate函数
(3)translate函数与replace函数的区别主要是,translate将指定字符串拆分成字符进行匹配并且每个字符与替换字符一一对应,举例如下:
将jisuanji"字符串中的ji替换为1;
SQL> select translate('jisuanji','ji',1) from dual;
TRANSLATE('JISUANJI','JI',1)
----------------------------
1suan1
说明:上面的例子中,sql将'ji'拆分成'j''i'这两个字符,然后j与1进行匹配,但是i没有匹配到替换字符,所以为空,效果就是抹掉,最终得到的效果就是1suan1,这与replace同样的例子效果一样,但是原理不一样,这点需要注意。
SQL> select translate('jisuanji','js',12) from dual;
TRANSLATE('JISUANJI','JS',12)
-----------------------------
1i2uan1i
上面这里例子揭示了translate函数的原理。
总结:通过对replace和translate函数对比分析并结合个人使用经验,认为translate函数操作灵活,推荐使用translate函数代替replace函数。