web-dev-qa-db-fra.com

Convertir une chaîne en int en utilisant une requête SQL

Comment convertir une chaîne en entier à l'aide d'une requête SQL sur SQL Server 2005?

141
Rahul Vyas

Vous pouvez utiliser CAST ou CONVERT :

SELECT CAST(MyVarcharCol AS INT) FROM Table

SELECT CONVERT(INT, MyVarcharCol) FROM Table
256
CMS

Sachez également que lors de la conversion d'une chaîne numérique, à savoir '56.72' vers INT, vous risquez de vous heurter à une erreur SQL.

Conversion failed when converting the varchar value '56.72' to data type int.

Pour contourner ce problème, effectuez 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 seconde conversion (si vous arrondissez bien à l’INT le plus proche):

INSERT INTO TableB (MyIntCol)
SELECT CAST(MyVarcharCol AS NUMERIC(19,4)) as [MyIntCol]
FROM TableA
11
Steven de Salas

À partir de SQL Server 2012, vous pouvez utiliser TRY_PARSE ou TRY_CONVERT .

SELECT TRY_PARSE(MyVarcharCol as int)

SELECT TRY_CONVERT(int, MyVarcharCol)
4
Örjan Jämte

essayez celui-ci cela a fonctionné pour moi dans le casting Athena (MyVarcharCol en tant qu'entier)

0
ashutosh singh