Monthly Archives: October 2011

oracle的translate函数

语法: translate(expr, from_string, to_string) 正常的用法,把expr中from_string中的每一位替换为to_string对应位置的字符,下面的例子是把what is your name?中的空格替换为下划线,问号替换为感叹号 SYS@orcl>select translate(‘what is your name?’, ‘ ?’, ‘_!’) from dual; TRANSLATE(‘WHATISY —————— what_is_your_name! 更加有用的使用方法是利用translate的一个特性,如果from_string的位数比to_string长,那么超出位数的字符会被替换为空,下面是一个例子,把name中的非数字删除: SYS@orcl>var name varchar2(20); SYS@orcl>exec :name := ‘abc12345def’; SYS@orcl>select translate(:name, ’0123456789′||:name, ’0123456789′) from dual; TRANSLATE(:NAME,’0123456789′||:NAME,’0123456789′) ———————————————————————————————————————— 12345 参考资料: oracle中translate函数的使用 oracle对translate函数的说明