SQLSERVER中ISNUMERIC函數的注意事項


實際應用中,我只是根據函數名顧名思義地使用它來判斷字符串是否是數值類型,直到今天出現了一個BUG,將字符串21D-003的結果返回真,感到莫名其妙,然后網上搜尋ISNUMERIC函數的使用說明,才發現原來ISNUMERIC函數是用於判斷字符串是否是貨幣類型(特殊的數值類型),字符串是含有+、-、貨幣符號等都會返回真。估計‘21D-003’中的D被識別為某種貨幣符號,所以整體結果返回真。

如果要判斷某字符串是否是純數值,有網友建議使用另一個函數:

PATINDEX('%[^0-9|.|-|+]%',字符串)=0  #這個匹配數字、正負號、小數點
PATINDEX('%[^0-9|.]%',字符串)=0 #這個匹配數字和小數點
PATINDEX('%[^0-9|.]%',字符串)=0 #這個只匹配純數字


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM