Esta cuestión se puede abordar de variadas maneras, pero nosotros te mostramos la que en nuestra opinión es la respuesta más completa.
Solución:
Podrías usar CAST o CONVERT:
SELECT CAST(MyVarcharCol AS INT) FROM Table
SELECT CONVERT(INT, MyVarcharCol) FROM Table
También tenga en cuenta que al convertir de números string es decir '56.72'
a INT puede encontrarse con un error de SQL.
Conversion failed when converting the varchar value '56.72' to data type int.
Para evitar esto, simplemente haga dos conversiones de la siguiente manera:
CADENA -> 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 con el redondeo 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)
Si crees que te ha sido de ayuda este artículo, sería de mucha ayuda si lo compartieras con más programadores así nos ayudas a extender esta información.