2009-01-09 108 views
8

Cuando inserto registros en una tabla larga, recibo el error "Error de conversión al convertir el valor varchar 'NULL' al tipo de datos int" ¿Cómo puedo determinar qué errores de columna salen?"Error de conversión al convertir el valor varchar 'NULL' al tipo de datos int"

La tabla tiene muchos campos y millones de registros. Cada iteración tarda 10 minutos en explotar cuando intento insertar una cadena "NULA" en una columna entera en alguna parte. Pensé que SQL Server puede decirme el nombre exacto de la columna :(

+0

¿Qué quiere decir con una tabla larga y podría mostrar el SQL que está causando el problema? – wcm

+0

¿Dónde está viendo este error? ¿Está ejecutando un script desde Query Analyzer o está burbujeando desde una llamada executeScalar en una aplicación dotNet? Una vez que sepamos esto, tal vez podamos ofrecer algunas mejores sugerencias sobre cómo resolver esto. – wcm

Respuesta

2

Comience a comentar cosas de a una por vez hasta que deje de bombardear O mire y vea qué valor está pasando es NULO para una columna int .

+0

Estoy de acuerdo, no es elegante ni necesariamente eficiente, pero así es como lo haría. –

2

Qué se necesita para corregir los datos o puede simplemente convertir nulos a 0 es para que inserte?

Si sólo puede convertir, se puede envolver sus varchars que se están convertidos con una función ISNULL. Sólo hay que poner lo siguiente alrededor de cualquier valor que se esté insertando en los campos int.

ISNULL(col1,0) 
12

Si el valor es verdaderamente NULL, no habría un error de conversión. Sin embargo, tiene una cadena = "NULO" entonces obtendría este error.

Lo que podría hacer es ...

NullIf(YourValueHere, 'NULL') 

NullIf devuelve el valor del primer parámetro si no es el mismo que el segundo parámetro. Si los parámetros son los mismos, NullIf devolverá NULL.

Ex:

Select NullIf('Any Value', 'NULL') 

Select NullIf('null','null') 

La primera devolverá 'Cualquier Valor' y el segundo volverá NULL (no 'nulo')

3

El hecho de que se menciona "la varchar valor 'NULL '"indica que está intentando establecer el valor de la columna en la cadena" NULL "en lugar del valor NULL.

Mire en su extracto de la palabra NULL rodeado de comillas. Tendrá que eliminar estas citas.

Cuestiones relacionadas