我有一个巨大的INSERT
-statement与200列和suddendly我得到了可怕的Error converting data type varchar to numeric
。有什么地方可以看到包含“varchar”值的实际列吗?我知道我可以一次删除其中一列,直到错误消失,但这非常乏味。“将数据类型varchar转换为数字时出错。” - 什么专栏?
8
A
回答
5
您不指定SQL Server版本或行数。
对于SQL2005 +添加OUTPUT
子句的INSERT可能有助于识别流氓行,它会输出插入的行,直到它,因此下一行是一个与问题遇到错误
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
返回
(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.
+0
之前从未试过INSERT上的OUTPUT。谢谢! – Espo 2010-07-09 06:47:21
0
6
不幸的是,这个错误是一个严重的痛苦,没有简单的方法来解决它。当我过去遇到它时,我总是不得不评论列组,直到找到罪魁祸首。
另一种方法可能是使用T-SQL中的ISNUMERIC()函数来尝试查找罪魁祸首。在你的目标表假设每列数字(相应调整,如果不是),你可以试试这个:
SELECT *
FROM SourceTable
WHERE ISNUMERIC(Column1) = 0
OR ISNUMERIC(Column2) = 0
OR ISNUMERIC(Column3) = 0
OR ISNUMERIC(Column4) = 0
...
这将会使包含您的非数字值的行,而应该让它非常清楚哪一列它是英寸,我知道它很乏味,但至少它可以帮助你追捕实际价值,除了造成麻烦的专栏之外。
相关问题
- 1. 将数据类型从varchar转换为数字时出错
- 2. 转换数据类型时出错varchar
- 3. SQL Server转换异常:将数据类型varchar转换为数字时出错
- 4. 将varchar转换为数字时出错
- 5. 将数据类型varchar转换为int错误时出错?
- 6. 将数据类型varchar转换为float时出错。
- 7. 使用GETDATE将数据类型varchar转换为datetime时出错()
- 8. 错误'将数据类型varchar转换为数字时出错' - 创建新表
- 9. 将数据类型varchar转换为浮点时出错
- 10. 将数据类型bigint转换为varchar时出错。
- 11. 将数据类型varchar转换为float时出错。 C#VS
- 12. 算术溢出错误转换数字数据类型为varchar
- 13. 将数据类型varchar转换为浮点数时出现错误字符串
- 14. t-sql:将数据类型varchar转换为数字在语句中时出错
- 15. 在VBA/SOAP中将数据类型varchar转换为数字时出错
- 16. 将varchar转换为数据类型的算术溢出错误
- 17. 将数据类型nvarchar转换为数字时出错 - SQL Server
- 18. 将varchar值转换为数据类型时转换失败int
- 19. 将varchar值“”....“'转换为数据类型int时转换失败
- 20. 无法将数据类型为varchar转换为数字
- 21. 算术溢出错误将varchar转换为数据类型数字
- 22. SQL Server 2008 varchar到十进制的结果是:“将数据类型varchar转换为数字时出错”
- 23. 什么导致错误'算术溢出错误将varchar转换为数据类型数字'?
- 24. 将varchar值645.00转换为数据类型int时出现转换失败int
- 25. 错误转换数据类型为varchar到数字
- 26. SQL错误转换数据类型为varchar到数字
- 27. 在select语句中将数据类型varchar转换为bigint时出错
- 28. 将数据类型varchar转换为varbinary时出错。 MSSQL在转换为整数时
- 29. CONVERT抛出错误转换数据类型日期为varchar
- 30. 将数据类型varchar转换为float时出错。 C#web服务
您可以一次注释掉一半列;仍然乏味,但更快。 – 2010-07-01 09:57:26