sqlserver 判斷字符串是否是數字


https://www.cnblogs.com/zjfblog/p/5625202.html

 

 

sql2005有個函數ISNUMERIC(expression)函數:當expression為數字時,返回1,否則返回0。這只是一個菜鳥級的解決辦法,大多數情況比較奏效。

eg:

select ISNUMERIC('123') --結果為1

但是,該函數有個缺點!

eg:

復制代碼
 SELECT 
 ,ISNUMERIC('-') as '-' --1 ,ISNUMERIC('+') as '+' --1 ,ISNUMERIC('$') as '$' --1 ,ISNUMERIC('.') as '.' --1 ,ISNUMERIC(',') as ',' --1 ,ISNUMERIC('\') as '\' --1 ,ISNUMERIC('2D3') AS '2D3'--1 ,ISNUMERIC('1d1') AS '1d1'--1 ,ISNUMERIC('1e1') AS '1e1'--1
,ISNUMERIC('d') AS 'd' --0
復制代碼

當含有美元符、加減號、逗號等符號時,或者D、E的前后均出現數字時,也會返回1,這就比較頭疼了。標點符號倒是好理解,為什么d,e這種情況,真是不理解微軟設計的意圖。

有什么好的解決辦法嗎?當然了,請看下面

方法:通配符。高逼格使用。

適用場景:2005及以上(2005之前的版本沒試過,應該也支持)

 --返回0-則為純數字(支持正負數,小數點) SELECT PATINDEX('%[^0-9|.|-|+]%','2.2')--返回0 --返回0-則為純整數 select PATINDEX('%[^0-9]%', '2.2')--返回非0


免責聲明!

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



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