3 回答

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
如果varchar值可以轉(zhuǎn)換為ANY數(shù)字類型,則IsNumeric返回1。這包括int,bigint,十進(jìn)制,數(shù)字,實(shí)數(shù)和浮點(diǎn)數(shù)。
科學(xué)計(jì)數(shù)法可能會(huì)給您造成問題。例如:
Declare @Temp Table(Data VarChar(20))
Insert Into @Temp Values(NULL)
Insert Into @Temp Values('1')
Insert Into @Temp Values('1e4')
Insert Into @Temp Values('Not a number')
Select Cast(Data as bigint)
From @Temp
Where IsNumeric(Data) = 1 And Data Is Not NULL
您可以使用IsNumeric技巧,使具有科學(xué)計(jì)數(shù)法的數(shù)字返回0。您可以應(yīng)用類似的技巧來防止十進(jìn)制值。
IsNumeric(YourColumn +'e0')
IsNumeric(YourColumn +'.0e0')
試試看。
SELECT CAST(myVarcharColumn AS bigint)
FROM myTable
WHERE IsNumeric(myVarcharColumn + '.0e0') = 1 AND myVarcharColumn IS NOT NULL
GROUP BY myVarcharColumn
- 3 回答
- 0 關(guān)注
- 619 瀏覽
添加回答
舉報(bào)