sql >> Database >  >> RDS >> Sqlserver

CAST en IsNumeric

IsNumeric retourneert 1 als de varchar-waarde kan worden geconverteerd naar ELK getaltype. Dit omvat int, bigint, decimal, numeric, real &float.

Wetenschappelijke notatie kan voor een probleem zorgen. Bijvoorbeeld:

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

Er is een truc die je kunt gebruiken met IsNumeric, zodat het 0 retourneert voor getallen met wetenschappelijke notatie. Je kunt een soortgelijke truc toepassen om decimale waarden te voorkomen.

IsNumeriek(UwKolom + 'e0')

IsNumeriek(UwKolom + '.0e0')

Probeer het uit.

SELECT CAST(myVarcharColumn AS bigint)
FROM myTable
WHERE IsNumeric(myVarcharColumn + '.0e0') = 1 AND myVarcharColumn IS NOT NULL
GROUP BY myVarcharColumn


  1. Hoe kan ik mysqli_fetch_array() twee keer gebruiken?

  2. Android - Gebruikersnaam weergeven uit sqlite-database na inloggen in textView

  3. De geparametriseerde query ..... verwacht de parameter '@units', die niet is opgegeven

  4. Hoe de UCASE()-functie werkt in MySQL