¿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)