sql >> Database teknologi >  >> RDS >> Sqlserver

CAST og IsNumeric

IsNumeric returnerer 1, hvis varchar-værdien kan konverteres til ENHVER taltype. Dette inkluderer int, bigint, decimal, numerisk, reel og float.

Videnskabelig notation kan give dig et problem. For eksempel:

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

Der er et trick, du kan bruge med IsNumeric, så det returnerer 0 for tal med videnskabelig notation. Du kan anvende et lignende trick for at forhindre decimalværdier.

IsNumeric(Din Kolonne + 'e0')

IsNumeric(DinKolonne + '.0e0')

Prøv det.

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


  1. 2 måder at liste alle funktioner i MySQL

  2. Tilføj skiftende rækkefarve til rapporten SQL Server Reporting Services

  3. NCHR() Funktion i Oracle

  4. Opdater en MySQL-tabel med værdier fra en anden