¿Cómo convertir una cadena a entero usando la consulta SQL en SQL Server 2005?
¿Cómo convertir una cadena a entero usando la consulta SQL en SQL Server 2005?
Respuestas:
Puedes usar CAST o 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()
puede producir algunos resultados perversos. Devolverá VERDADERO para la cadena "-.", Que seguirá causando un error cuando intente convertirlo en un número.
También tenga en cuenta que al convertir una cadena numérica, es decir, '56.72'
a INT, puede encontrar un error de SQL.
Conversion failed when converting the varchar value '56.72' to data type int.
Para evitar esto, solo haga dos conversiones de la siguiente manera:
STRING -> NUMÉRICO -> INT
o
SELECT CAST(CAST (MyVarcharCol AS NUMERIC(19,4)) AS INT)
Al copiar datos de TableA a TableB, la conversión es implícita, por lo que no necesita la segunda conversión (si está satisfecho redondeando al INT más cercano):
INSERT INTO TableB (MyIntCol)
SELECT CAST(MyVarcharCol AS NUMERIC(19,4)) as [MyIntCol]
FROM TableA
A partir de SQL Server 2012, puede usar TRY_PARSE o TRY_CONVERT .
SELECT TRY_PARSE(MyVarcharCol as int)
SELECT TRY_CONVERT(int, MyVarcharCol)
Prueba este, me funcionó en Athena:
cast(MyVarcharCol as integer)