Tengo una enorme INSERT
-establecimiento con 200 columnas y de repente me sale el temido Error converting data type varchar to numeric
. ¿Hay algún lugar donde pueda ver la columna real que contiene el valor "varchar"? Sé que puedo eliminar una de las columnas a la vez hasta que el error desaparezca, pero es muy tedioso."Error al convertir el tipo de datos varchar a numérico". - ¿Qué columna?
Respuesta
No especifica la versión del servidor SQL o el número de filas.
Para SQL2005 + añadiendo la cláusula OUTPUT
a la inserción podría ayudar a identificar la fila Rogue en que se dará salida a las filas insertadas hasta que encuentra un error por lo que la siguiente fila es el que tiene el problema
DECLARE @Source TABLE
(
Col1 VARCHAR(10),
Col2 VARCHAR(10)
)
INSERT INTO @Source
SELECT '1','1' UNION ALL
SELECT '2','2' UNION ALL
SELECT '3','3' UNION ALL
SELECT '4A','4' UNION ALL
SELECT '5','5'
DECLARE @Destination TABLE
(
Col1 INT,
Col2 VARCHAR(10)
)
INSERT INTO @Destination
OUTPUT inserted.*
SELECT *
FROM @Source
devoluciones
(5 row(s) affected) Col1 Col2 ----------- ---------- 1 1 2 2 3 3 Msg 245, Level 16, State 1, Line 23 Conversion failed when converting the varchar value '4A' to data type int.
Nunca probé SALIDA en INSERT antes. ¡Gracias! – Espo
Bueno, esto es sólo una corazonada, pero ¿qué hay de insertar los datos en una tabla temporal y el uso de la GUI para migrar los datos a la otra tabla? Si sigue generando un error, al menos debe ser capaz de obtener más información sobre esa columna no numérica ...
Si esto no funciona, considere tratando this.
Salud!
Desafortunadamente, este error es un problema grave y no hay una manera fácil de solucionarlo. Cuando lo he encontrado en el pasado, siempre he tenido que comentar grupos de columnas hasta que encuentro al culpable.
Otro enfoque podría ser utilizar la función ISNUMERIC() en T-SQL para intentar encontrar el culpable. Suponiendo que cada columna de la tabla de destino es numérico (ajustar en consecuencia si no es), podría intentar esto:
SELECT *
FROM SourceTable
WHERE ISNUMERIC(Column1) = 0
OR ISNUMERIC(Column2) = 0
OR ISNUMERIC(Column3) = 0
OR ISNUMERIC(Column4) = 0
...
Esto expondrá la fila que contiene el valor no numérico, y debe dejar muy claro qué columna está dentro. Sé que es tedioso, pero al menos te ayuda a buscar el valor real, además de la columna que está causando problemas.
- 1. Error: error de desbordamiento aritmético al convertir numérico al tipo de datos varchar
- 2. t-sql: Error al convertir el tipo de datos varchar a numérico en la declaración
- 3. Error al convertir el tipo de datos varchar
- 4. Cambiar valores al convertir el tipo de columna a numérico
- 5. Convertir el valor numérico a Varchar
- 6. Sql Excepción: Error al convertir el tipo de datos numérico a numérico
- 7. "Error de conversión al convertir el valor varchar 'NULL' al tipo de datos int"
- 8. error de desbordamiento aritmético al convertir numérico para el tipo de datos numéricos
- 9. Consulta SQL, seleccionando el identificador único da - Error al convertir el tipo de datos varchar a uniqueidentifier
- 10. Conversión fallida al convertir el valor varchar a int
- 11. T-SQL: Convertir la columna de fecha varchar al tipo de fecha
- 12. ¿Cómo convertir una columna de marco de datos a un tipo numérico?
- 13. Cómo convertir el tipo de columna de varchar a la fecha en PostgreSQL?
- 14. Convertir cadena al campo numérico
- 15. Convertir meses mmm a numérico
- 16. Error que convierte el tipo de datos nvarchar a int
- 17. Conversión de tipo de datos MySQL de varchar a float
- 18. Convertir varchar flotar SI ISNUMERIC
- 19. Cómo convertir std :: wstring a tipo numérico (int, long, float)?
- 20. SQL Server 2005: Convertir el valor varchar '1.23E-4' a decimal falla
- 21. Error tipo de datos convertir nvarchar a fecha y hora
- 22. Varchar (255) a Varchar (MAX)
- 23. Cambiar el tipo de una columna con números de varchar a int
- 24. Cómo convertir una columna de tabla a otro tipo de datos
- 25. Convertir varchar en datetime en SQL Server
- 26. cómo convertir el hexadecimal a varchar (datetime)?
- 27. error de desbordamiento aritmético al convertir expresión a tipo de datos de fecha y hora
- 28. Cambiar el tipo de datos de una columna en Oracle
- 29. Postgres: Convertir varchar en texto
- 30. ¿Qué tipo de SqlDbType se asigna a varChar (max)?
Puede comentar la mitad de las columnas a la vez; sigue siendo tedioso, pero más rápido. –