實際應用中,我只是根據函數名顧名思義地使用它來判斷字符串是否是數值類型,直到今天出現了一個BUG,將字符串21D-003的結果返回真,感到莫名其妙,然后網上搜尋ISNUMERIC函數的使用說明,才發現原來ISNUMERIC函數是用於判斷字符串是否是貨幣類型(特殊的數值類型),字符串是含有+、-、貨幣符號等都會返回真。估計‘21D-003’中的D被識別為某種貨幣符號,所以整體結果返回真。
如果要判斷某字符串是否是純數值,有網友建議使用另一個函數:
PATINDEX('%[^0-9|.|-|+]%',字符串)=0 #這個匹配數字、正負號、小數點
PATINDEX('%[^0-9|.]%',字符串)=0 #這個匹配數字和小數點
PATINDEX('%[^0-9|.]%',字符串)=0 #這個只匹配純數字