Sachez également que lors de la conversion d'une chaîne numérique, c'est- '56.72'
à- dire vers INT, vous pouvez rencontrer une erreur SQL.
Conversion failed when converting the varchar value '56.72' to data type int.
Pour contourner ce problème, effectuez simplement deux conversions comme suit:
STRING -> NUMERIC -> INT
ou
SELECT CAST(CAST (MyVarcharCol AS NUMERIC(19,4)) AS INT)
Lors de la copie de données de TableA vers TableB, la conversion est implicite, vous n'avez donc pas besoin de la deuxième conversion (si vous êtes heureux d'arrondir à l'INT le plus proche):
INSERT INTO TableB (MyIntCol)
SELECT CAST(MyVarcharCol AS NUMERIC(19,4)) as [MyIntCol]
FROM TableA
Steven de Salas
la source
select CASE WHEN ISNUMERIC('x') = 1 THEN CAST('x' AS INT) ELSE 0 END
IsNumeric()
peut produire des résultats pervers. Il renverra TRUE pour la chaîne "-.", Ce qui provoquera toujours une erreur lorsque vous essayez de la convertir en nombre.