共计 1585 个字符,预计需要花费 4 分钟才能阅读完成。
自动写代码机器人,免费开通
这篇文章给大家介绍 translate 与 replace 函数怎么在 Oracle 中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
translate 函数语法:
translate(expr, from_strimg, to_string)
简介:
translate 返回 expr,其中 from_string 中的每个字符的所有出现都被 to_string 中的相应字符替换。expr 中不在 from_string 中的字符不会被替换。如果 expr 是一个字符串,那么你必须把它放在单引号中。from_string 的参数可以包含比 to_string 更多的字符。在这种情况下,from_string 末尾的多余字符在 to_string 中没有对应的字符。如果这些额外的字符出现在字符中,那么它们将从返回值中移除。
您不能使用 to_string 的空字符串从返回值中删除 from_string 中的所有字符。Oracle 数据库将空字符串解释为空,如果此函数具有空参数,则返回 null。
translate 提供了与 replace 函数相关的功能。replace 让你用一个字符串替换另一个字符串,以及删除字符串。translate 允许您在一个操作中进行多个单字符,一对一的替换。
该函数不直接支持 CLOB 数据。但是,CLOB 可以通过隐式数据转换作为参数传递。
例子:
以下语句将一句话转换为具有下划线分隔的字符串。from_string 包含四个字符:井号,美元符号,空格,星号。to_string 只包含一个 @符号和两个下划线。这使得 from_string 中的第四个字符没有相应的替换,所以星号从返回的值中删除。
SELECT TRANSLATE(itmyhome#163.com$is my* email , #$ * , @__) from dual
----------
itmyhome@163.com_is_my_email
replace 函数
语法:
REPLACE(char, search_string,replacement_string)
用法:
将 char 中的字符串 search_string 全部转换为字符串 replacement_string。
举例:
SQL select REPLACE(fgsgswsgs , fk , j) 返回值 from dual;
返回值
---------
fgsgswsgs
SQL select REPLACE(fgsgswsgs , sg , eeerrrttt) 返回值 from dual;
返回值
-----------------------
fgeeerrrtttsweeerrrttts
分析:
第一个例子中由于 fgsgswsgs 中没有与 fk 匹配的字符串,
故返回值仍然是 fgsgswsgs;
第二个例子中将 fgsgswsgs 中的字符串 sg 全部转换为 eeerrrttt。
总结:综上所述,replace 与 translate 都是替代函数,
只不过 replace 针对的是字符串,而 translate 针对的是单个字符。
和 replace 函数的区别
select translate(itmyhome#163%com , #% , @.) from dual;
select replace(itmyhome#163%com , #% , @.) from dual;
---------
itmyhome@163.com
itmyhome#163%com
上面的 translate 函数是将 #替换为 @,% 替换为.
而 replace 却没有实现此效果,是因为没有找到 #% 整体的组合
关于 translate 与 replace 函数怎么在 Oracle 中使用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
向 AI 问一下细节