我有一个包含200列的巨大INSERT语句,并且我发现了将数据类型varchar转换为数字的可怕错误.有什么地方我可以看到包含“varchar”值的实际列吗?我知道我可以一次删除其中一个列,直到错误消失,但这非常繁琐.
解决方法
您没有指定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.