sql >> Databasteknik >  >> RDS >> Sqlserver

Konverteringen misslyckades när varchar-värdet 'simple' konverterades till datatyp int

För att undvika sådana fel kan du använda CASE + ISNUMERIC för att hantera scenarier när du inte kan konvertera till int.
Ändra

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

Till

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

I grund och botten är detta att säga om du inte kan konvertera mig till int tilldela värdet 0 (i mitt exempel)

Alternativt kan du titta på den här artikeln om att skapa en anpassad funktion som kontrollerar om a.value är nummer:http://www.tek-tips.com/faqs.cfm?fid=6423



  1. SQL datumformat

  2. Hur MapReduce fungerar i Hadoop

  3. Säkerhetskopiera dina MySQL-databaser

  4. Lära 2 och Många-till-många länktabell med ett extra fält