Ho un enorme INSERT
-stato con 200 colonne e improvvisamente ho il temuto Error converting data type varchar to numeric
. C'è un posto dove posso vedere la colonna attuale che contiene il valore "varchar"? So che posso rimuovere una delle colonne alla volta finché l'errore non scompare, ma è molto noioso."Errore durante la conversione del tipo di dati varchar in numerico." - Quale colonna?
risposta
Non si specifica la versione di SQL Server o il numero di righe.
Per SQL2005 + aggiungendo la clausola OUTPUT
all'inserto potrebbe aiutare a identificare la riga scorrette in che esso emetta le righe inserite fino a un errore così la riga successiva è quello con il 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
ritorni
(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.
Mai provato OUTPUT su INSERT prima. Grazie! – Espo
Bene, questa è solo un'ipotesi, ma che dire di inserire i dati in una tabella temporanea e utilizzare la GUI per migrare i dati nell'altra tabella? Se genera ancora un errore, si dovrebbe almeno essere in grado di ottenere più feedback su quella colonna non numerico ...
Se non funziona, considerare cercando this.
Cheers!
Sfortunatamente, questo errore è un problema serio e non esiste un modo semplice per risolverlo. Quando l'ho incontrato in passato, ho sempre dovuto commentare gruppi di colonne finché non ho trovato il colpevole.
Un altro approccio potrebbe essere utilizzare la funzione ISNUMERIC() in T-SQL per cercare di trovare il colpevole. Supponendo che ogni colonna della tabella di destinazione è numerico (regolare di conseguenza se non è), si potrebbe provare questo:
SELECT *
FROM SourceTable
WHERE ISNUMERIC(Column1) = 0
OR ISNUMERIC(Column2) = 0
OR ISNUMERIC(Column3) = 0
OR ISNUMERIC(Column4) = 0
...
Questo esporrà la riga che contiene il valore non numerico, e dovrebbe rendere abbastanza chiaro quale colonna è dentro. So che è noioso, ma almeno ti aiuta a dare la caccia al valore reale, oltre alla colonna che sta causando problemi.
- 1. Errore durante la conversione del tipo di dati varchar
- 2. t-sql: Errore durante la conversione del tipo di dati varchar in numerico nell'istruzione then
- 3. Eccezione Sql: errore durante la conversione del tipo di dati numerico in numerico
- 4. Conversione da varchar a numerico in Informix
- 5. Errore: errore di overflow aritmetico durante la conversione di valori numerici nel tipo di dati varchar
- 6. errore di overflow aritmetico durante la conversione numerica di tipo di dati numerico
- 7. Conversione non riuscita durante la conversione del valore varchar in
- 8. Errore tipo di dati Conversione 'numerico' di decimale (aiuto!)
- 9. Conversione non riuscita durante la conversione del valore varchar in int
- 10. Conversione SQL tipo di colonna da float a varchar
- 11. Errore di overflow aritmetico che converte varchar nel tipo di dati numerico. '10' <= 9,00
- 12. La conversione del valore varchar traboccato una colonna int
- 13. Conversione colonna frame di dati da carattere a numerico
- 14. SQL Server: errore nella conversione del tipo di dati da nvarchar a numerico
- 15. Conversione batch di colonne in tipo numerico
- 16. Conversione tipo concreto numerica numerico tipo generico
- 17. SQL Server 2005: Conversione del valore varchar '1.23E-4' in decimale fallisce
- 18. La conversione di un tipo di dati datetime2 a un tipo di dati datetime Errore
- 19. Come convertire una colonna di tipo TESTO in VARCHAR?
- 20. Errore durante la conversione del disco virtuale VmWare in HyperV
- 21. Conversione tra testo e varchar (MAX) in SQL Server
- 22. overflow del campo numerico - quale campo esattamente?
- 23. SQL Server: conversione varchar in INT
- 24. conversione di un tipo di dati datetime2 in un errore del tipo di dati datetime con il codice EF prima?
- 25. Errore che converte il tipo di dati nvarchar a numerico in vista
- 26. Varchar alla conversione numero per l'ordinamento
- 27. Mantieni gli indici SQL durante la modifica del tipo di dati colonna
- 28. Conversione del formato orario in numerico con R
- 29. readimageblob: Errore irreversibile durante la conversione di SVG in PNG
- 30. Errore durante la conversione del tipo di dati da nvarchar a int dall'applicazione (C#) ma non quando si esegue l'SP su proprio
È possibile commentare metà delle colonne alla volta; ancora noioso, ma più veloce. –