原文:
sqlserver判斷字串是否是數字
sql2005有個函式isnumeric(expression)函式:當expression為數字時,返回1,否則返回0。這只是乙個菜鳥級的解決辦法,大多數情況比較奏效。
eg:
selectisnumeric('
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
sqlserver判斷字串是否是數字
sql2005有個函式isnumeric expression 函式 當expression為數字時,返回1,否則返回0。這只是乙個菜鳥級的解決辦法,大多數情況比較奏效。eg select isnumeric 123 結果為1 但是,該函式有個缺點!eg 複製 select isnumeric as...
sqlserver判斷字串是否是數字
sql2005有個函式isnumeric expression 函式 當expression為數字時,返回1,否則返回0。這只是乙個菜鳥級的解決辦法,大多數情況比較奏效。eg select isnumeric 123 結果為1但是,該函式有個缺點!eg select,isnumeric as 1 i...
sqlserver判斷字串是否是數字
sql2005有個函式isnumeric expression 函式 當expression為數字時,返回1,否則返回0。這只是乙個菜鳥級的解決辦法,大多數情況比較奏效。eg select isnumeric 123 結果為1但是,該函式有個缺點!eg select,isnumeric as 1 i...