select nvl2(translate('81726ad76','1234567890',''),'is characters','is number') from dual;
返回 'is characters'
select nvl2(translate('8172217976','1234567890',''),'is characters','is number') from dual;
返回 'is number'
这两句SQL里在c2的最前面有个反斜杠,c3就是一个反斜杠,ITPUB的BLOG输不进反斜杠。
[@more@]解释:
TRANSLATE(c1,c2,c3) 将c1中与c2相同的字符以c3代替
example:
SQL> select TRANSLATE('fumble','uf','ar') test from dual;
TEST
------
ramble
SQL> select translate('8172217976','1234567890','') from dual;
TRANSLATE('8172217976','12345
------------------------------
这里返回空值
如果c2为'xxxxxxxx'的形式,就不管c3是什么值,都把c1里在c2里出现的字符逐个删除,所以,用任何数字组成的字符串去和'1234567890'做比较,最终的结果都是空。
NVL2 (expr1, expr2, expr3) 如果expr1为非空,则返回expr2,如果expr1为NULL,则返回expr3