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

Konvertering mislykkedes ved konvertering af varchar-værdien 'simple' til datatypen int

For at undgå en sådan fejl kan du bruge CASE + ISNUMERIC til at håndtere scenarier, hvor du ikke kan konvertere til int.
Skift

CONVERT(INT, CONVERT(VARCHAR(12), a.value))

Til

CONVERT(INT,
        CASE
        WHEN IsNumeric(CONVERT(VARCHAR(12), a.value)) = 1 THEN CONVERT(VARCHAR(12),a.value)
        ELSE 0 END) 

Grundlæggende er dette at sige, hvis du ikke kan konvertere mig til int tildele værdien 0 (i mit eksempel)

Alternativt kan du se denne artikel om oprettelse af en brugerdefineret funktion, der kontrollerer om a.value er nummer:http://www.tek-tips.com/faqs.cfm?fid=6423



  1. Hvordan man forbedrer databasenøjagtigheden

  2. SQL, Postgres OID'er, hvad er de, og hvorfor er de nyttige?

  3. Beregning af værdi ved hjælp af forrige værdi af en række i T-SQL

  4. Træk sekunder fra en dato-tidsværdi i MariaDB