Comment convertir une chaîne de caractères en nombre entier en utilisant une requête SQL sur SQL Server 2005 ?
Sachez également que lors de la conversion d'une chaîne numérique, par exemple "56.72", en 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, il suffit de faire deux conversions comme suit :
STRING -> NUMERIC -> INT
ou
SELECT CAST(CAST (MyVarcharCol AS NUMERIC(19,4)) AS INT)
Lorsque vous copiez des données de la TableA à la TableB, la conversion est implicite, vous n'avez donc pas besoin du deuxième convertisseur (si vous vous contentez 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][1] ou [TRY_CONVERT][2].
SELECT TRY_PARSE(MyVarcharCol as int)
SELECT TRY_CONVERT(int, MyVarcharCol)
[1] : https://docs.microsoft.com/en-us/sql/t-sql/functions/try-parse-transact-sql [2] : https://docs.microsoft.com/en-us/sql/t-sql/functions/try-convert-transact-sql