2011-04-29 39 views
12

quiero insertar todas las filas de una tabla en otra tabla, y también quiero convertir un campo nvarchar en bigint, pero cuando se utiliza convert(bigint, col1) SQL Server muestra un error:Convertir nvarchar a bigint en el servidor SQL 2008

Error converting data type nvarchar to bigint

¿Cómo puedo solucionar este problema?

+4

"¿Cómo puedo solucionar este problema? " - simple. eliminar los datos que no se pueden convertir a biginteger –

+0

¿Cómo puedo eliminar datos no numéricos automáticamente ...? –

+2

¡fallando tener una varita mágica, al escribir TSQL para eliminarlo! –

Respuesta

20

Usted podría tratar de usar ISNUMERIC para determinar las filas que son de hecho numérico:

UPDATE dbo.YourTable 
SET BigIntColumn = CAST(NVarcharColumn AS BIGINT) 
WHERE ISNUMERIC(NVarcharColumn) = 1 

que convertiría las filas que se pueden convertir - los otros necesitan ser tratados de forma manual.

+0

tnx ... esta es mi respuesta ... por lo que tnx –

+0

Esto no funcionará para los decimales almacenados como cadenas : SELECT CAST ('. 1' AS BIGINT) WHERE ISNUMERIC ('.1') = 1 –

+0

solo para agregar al comentario de BD, char (36) y caracteres 43-46, 48-57, 92, 128, 160, 162-165 todos evalúan a 1 siendo numérico. El kicker real está en una instrucción where o join donde filtra primero todos los valores no numéricos, al final hace una declaración de conversión, y este error aún ocurre (ignora el cortocircuito y evalúa toda la línea). –

Cuestiones relacionadas