200 sütun ile büyük bir INSERT
-statement var ve ben çok korkuyorum Error converting data type varchar to numeric
. "Varchar" değerini içeren gerçek sütunu görebileceğim bir yer var mı? Hataların ortadan kalkmasına kadar sütunlardan birini kaldırabildiğimi biliyorum, ama çok can sıkıcı."Veri türü varchar, sayısal olarak dönüştürülürken hata oluştu." - Hangi sütun?
cevap
SQL Server Sürümünü veya satır sayısını belirtmezsiniz. içinde haydut satır belirlenmesine yardımcı olabilecek INSERT için OUTPUT
de ekleme SQL2005 + için
o çıktısı verecektir sonraki satır sorunla biridir yüzden bir hatayla karşılaşır kadar sokulan satırlar
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
İade
(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.
Daha önce hiç bir zaman INSERT üzerinde OUTPUT denemeyin. Teşekkürler! – Espo
Eh, bu sadece bir önsezidir, ancak verileri geçici bir tabloya ekleme ve verileri diğer tabloya geçirmek için GUI'yi kullanma hakkında ne olur? Hala bir hata oluşturursa, en azından işe yaramazsa
, this.
Şerefe denemeyi düşünün ... Bu sayısal olmayan sütun üzerinde daha fazla geri bildirim almak gerekir!
Ne yazık ki, bu hata ciddi bir acıdır ve sorunu gidermek için kolay bir yol yoktur. Geçmişte karşılaştığımda, suçu bulana kadar her zaman sütun gruplarını yorumlamak zorunda kaldım.
Başka bir yaklaşım, suçluyu bulmak ve bulmak için T-SQL'de ISNUMERIC() işlevini kullanmak olabilir.
SELECT *
FROM SourceTable
WHERE ISNUMERIC(Column1) = 0
OR ISNUMERIC(Column2) = 0
OR ISNUMERIC(Column3) = 0
OR ISNUMERIC(Column4) = 0
...
Bu sayısal olmayan değer içeren satırı maruz edecek ve hangi sütunun oldukça açık yapmalıdır: Hedef tablosundaki her sütun varsayarsak (eğer o değil buna göre ayarlayın) sayısalsa, bunu deneyebilirsiniz İçinde çok sıkıcı olduğunu biliyorum, ama en azından sorun yaratan sütuna ek olarak gerçek değeri yakalamanıza yardımcı olur.
- 1. SQL Hatası: Varchar değeri 'PJOI015' veri türü biti
- 2. Excel veri ayıklama - Sütun veri türü ile sorun
- 3. Sayısal alan taşması - hangi alanda tam olarak? Bir hata durumunda
- 4. nsfetchedResultsController - veri birleştirilirken hata oluştu
- 5. Karakterler sql char ve varchar veri türü içinde desteklenmiyor
- 6. SQL Server: nvarchar veri türünü sayısal olarak dönüştürürken hata
- 7. Sütun, parametre veya # 10 değişken: Veri türü bulamıyor
- 8. MySQL UTF8 varchar sütun boyutu
- 9. MySQL - varchar sütunu sadece sayısal olmayan (alfa sayısal) seçmek istediğiniz
- 10. Postgres veri türü cast
- 11. Sayısal veri türü için izin verilen maksimum değer
- 12. Veritabanına bağlanırken hata oluştu: "Geçersiz Veri Kaynağı"
- 13. group_concat üzerindeki MySQL varchar sütunu,
- 14. "{" 1 ":" 1 "," 3 ":" 1 "}" değeri dönüştürülürken hata oluştu "System.Collections.Generic.Dictionary`2 [System.String, System.String] '
- 15. Tarih/saat artan AM/PM'de varchar veri türü olarak saklanan tarih-zaman nasıl sıralanır?
- 16. Veri tablosu tablosuna veri eklenirken hata oluştu com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException java
- 17. Linux'ta libgmp statik olarak bağlanırken hata oluştu
- 18. Regex, yakalama grupları olarak adlandırılırken hata oluştu
- 19. Bir liste içindeki veri çerçevelerinin sütun adlarını değiştirirken hata oluştu. R
- 20. veri türü
- 21. ORACLE SQL - tablo oluşturma geçersiz veri türü
- 22. Farklı bir veri türü
- 23. Veri türü
- 24. SQL bir varchar
- 25. SqlDbType hangi varChar (max) ile eşleşiyor?
- 26. pgadmin - bir hata oluştu, sütun "datconfig" mevcut değil
- 27. Simulink sinyal veri türü
- 28. Hangi sütun veri kesilme gerçekleştiğini görmek için nasıl
- 29. R tür faktörünün tüm sütunlarını sayısal olarak değiştirin
- 30. Birincil anahtar veri türü olarak bayt kullanımı
Her seferinde sütunların yarısını yorumlayabilirsiniz; Hala sıkıcı ama daha hızlı. –