2009-04-08 20 views

Respuesta

199

Usted podría utilizar CAST or CONVERT:

SELECT CAST(MyVarcharCol AS INT) FROM Table 

SELECT CONVERT(INT, MyVarcharCol) FROM Table 
+3

¿Cómo atrapo/evito la excepción cuando uno de los campos no es numérico? Hubiera esperado que se convirtiera a 0. – Chloe

+30

Lo encontré: 'seleccione CASE WHEN ISNUMERIC ('x') = 1 THEN CAST ('x' AS INT) ELSE 0 END' – Chloe

+8

Solo una palabra:' IsNumeric() 'puede producir algunos resultados perversos. Devolverá TRUE para la cadena "-.", Que aún causará un error cuando intente convertirlo en un número. – Curt

8

También tenga en cuenta que cuando se convierte de cadena numérica es decir '56.72' a INT uno se puede topar contra un error de SQL.

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

Para evitar esto acaba de hacer dos conversos de la siguiente manera:

String -> numéricos -> INT

o

SELECT CAST(CAST (MyVarcharCol AS NUMERIC(19,4)) AS INT) 

Al copiar los datos de la Tabla A a la Tabla B, el la conversión es implícita, por lo que no necesita la segunda conversión (si está contento redondeando al INT más cercano):

INSERT INTO TableB (MyIntCol) 
SELECT CAST(MyVarcharCol AS NUMERIC(19,4)) as [MyIntCol] 
FROM TableA 
Cuestiones relacionadas