atgc的博客
===========================================================
translate函数的用法
===========================================================

以下内容是我在别的贴子上回答的,供参考
http://www.itpub.net/showthread.php...light=TRANSLATE
http://www.itpub.net/showthread.php...10&pagenumber=1

select translate('采sg大gd型矩gd阵356式服][12','0123456789'||'采sg大gd型矩gd阵356式服][12','0123456789') from dual;

TRANS
-----
35612


解释一下
translate(string,from_str,to_str)
执行时,translate依次检查string中的每个字符
然后查找这个字符是否在from_str中存在
如果不存在,那么这个string中的字符被保留,也就是被返回,
如果存在,那么,translate会记下这个字符在from_str中的位置,
然后用to_str的同样位置的字符代替string中的这个字符

from_str可以比to_str长,也就是from_str的字符数目可以比to_str多
在from_str中多出来的字符称为"额外字符",也就是from_str中的位置在
to_str中找不到的,比如
from_str 'abc123'
to_str 'abc'
这里from_str中的1的位置是4,但是to_str的总长度是3,没有4,
所以在from_STR中的123都是额外字符
如果from_str中的额外字符在string中出现,那么string中这些字符将在返回时被删除

举例如下
SQL> select translate('ab12','ab2','00') from dual;

TRA
---
001
这里a和b都被替换成了00,因为a在from_str中的位置是1,那么被to_str中的位置1的字符替换
b也是一样的处理,被to_str中的位置2的字符替换,依然是0
string中的1在from_str没有找到,所以被保留下来了
string中的2在from_str中找到了,但是是from_str的额外字符,因为2在from_str中的位置是3
而to_str中是没有3这个位置的,所以string中的2虽然在from_str中找到了,且处于3的位置,
但是TO_STR的长度是2,没有3这个位置,所以2在返回时被删除
得到的是001

另外to_str不能是NULL或者'',否则会返回空值
translate也不能用于CLOB

再说得简单一点,也就是
1、如果string中的字符如果在from_string中没有,那么返回时被保留
2、如果string中的字符是from_string中的"额外字符",那么返回时被删除
3、如果string中的字符在from_string中找到,且在to_string中有相应位置的字符,
那么返回时用to_string中的字符替换string中的字符


atgc 发表于:2006.10.04 13:59 ::分类: ( 技术文章 ) ::阅读:(728次) :: 评论 (6)
re: translate函数的用法 [回复]

再说得简单一点,也就是
1、如果string中的字符如果在from_string中没有,那么返回时被保留
2、如果string中的字符是from_string中的"额外字符",那么返回时被删除
3、如果string中的字符在from_string中找到,且在to_string中有相应位置的字符,
那么返回时用to_string中的字符替换string中的字符

什么叫额外字符?

路过 评论于: 2007.04.09 00:28
re: translate函数的用法 [回复]

总结的很好!

JACKY 评论于: 2007.11.07 14:55
re: translate函数的用法 [回复]

cod overnight tramadol

abheiibnyx 评论于: 2007.12.06 19:13
上海特价机票 [回复]

气动调节阀;

上海特价机票 评论于: 2007.12.13 01:20
re: translate函数的用法 [回复]

太棒了smile

明冰 评论于: 2008.04.22 08:16
高空作业平台 [回复]
作业平台 评论于: 2008.06.03 16:56

发表评论
标题

在此添加评论
表情符号: smile laughing tongue angry crying sad wassat wink

称呼

邮箱地址(可选)

个人主页(可选)




切换风格
新闻聚合
博客日历
文章归档...
最新发表...
博客统计...
网站链接...