sqlserver判斷字串是否是數字

2021-09-20 14:45:28 字數 1210 閱讀 7969

原文:

sqlserver判斷字串是否是數字

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

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...