IsNumeric mengembalikan 1 jika nilai varchar dapat dikonversi ke tipe angka APAPUN. Ini termasuk int, bigint, desimal, numerik, nyata &float.
Notasi ilmiah dapat menyebabkan masalah bagi Anda. Misalnya:
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
Ada trik yang bisa Anda gunakan dengan IsNumeric agar mengembalikan 0 untuk angka dengan notasi ilmiah. Anda dapat menerapkan trik serupa untuk mencegah nilai desimal.
IsNumeric(Kolom Anda + 'e0')
IsNumeric(Kolom Anda + '.0e0')
Cobalah.
SELECT CAST(myVarcharColumn AS bigint)
FROM myTable
WHERE IsNumeric(myVarcharColumn + '.0e0') = 1 AND myVarcharColumn IS NOT NULL
GROUP BY myVarcharColumn