Comment convertir une chaîne en entier à l'aide d'une requête SQL sur SQL Server 2005?
Comment convertir une chaîne en entier à l'aide d'une requête SQL sur SQL Server 2005?
Réponses:
Vous pouvez utiliser CAST ou CONVERT :
SELECT CAST(MyVarcharCol AS INT) FROM Table
SELECT CONVERT(INT, MyVarcharCol) FROM Table
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.
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
À partir de SQL Server 2012, vous pouvez utiliser TRY_PARSE ou TRY_CONVERT .
SELECT TRY_PARSE(MyVarcharCol as int)
SELECT TRY_CONVERT(int, MyVarcharCol)
Essayez celui-ci, cela a fonctionné pour moi à Athéna:
cast(MyVarcharCol as integer)