sql >> Database teknologi >  >> Database Tools >> SSMS

SQL Server ISNUMERIC() afklaring

Du skal bruge CAST() eller TRY_CAST() i stedet:

declare @test nvarchar(8) = '12345678'
select cast(@test as bigint) -- errors on failure
select try_cast(@test as bigint) -- returns null on failure

Det er også vigtigt at påpege ISNUMERIC() er ikke perfekt. Fra dokumenterne :

ISNUMERIC returnerer 1 for nogle tegn, der ikke er tal, såsom plus (+), minus (-) og gyldige valutasymboler, såsom dollartegnet ($). For en komplet liste over valutasymboler, se penge og småpenge (Transact-SQL).

Af denne grund tror jeg ikke, at den logiske kontrol er af værdi her. Bedst at bruge TRY_CAST() på alle værdier, uanset tilstedeværelsen af ​​tegn og håndtere nul-svaret på en forudsigelig måde.



  1. Kan nogen hjælpe mig med at finde ud af, hvad der er galt med denne kode?

  2. MySQL - Størrelsesgrænser til heltalskolonner

  3. Nem forbindelse til AWS-datakilder

  4. Phpmyadmin-adgang nægtet efter ændring til ældre versioner af PHP/Apache på Wampserver