判断一个字符串是否全由数字组成

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

请使用浏览器的分享功能分享到微信等