哪一列导致插入错误

时间:2017-12-22 00:53:00

标签: sql-server tsql sql-server-2017

错误是

  

转换varchar值时转换失败' b'数据类型int。

表格结构:

CREATE TABLE [dbo].[Table_1]
(
    [columnA] varchar(50) NULL,
    [ColumnB] int NOT NULL,
    ColumnC int null
) ON [PRIMARY]
GO

INSERT INTO [dbo].[Table_1] ([columnA], [ColumnB], ColumnC)
VALUES (23, 56, 'b')

我的ETL管道记录所有错误。有些是有用的,例如

  

无法将值NULL插入列' ColumnB',table' DWDev.dbo.Table_1',列不允许空值。 INSERT失败'

虽然其他人相对无用。

如何提高我无法直接操作的错误信息的有用性,例如上面第一句中的错误信息?

1 个答案:

答案 0 :(得分:0)

对于ColumnA DataType是Varchar(50),你需要用单引号装饰值而ColumnC Datatype是Int,你不能插入'B',它应该是一个整数值。

您提供的值顺序应与插入子句中指定的列顺序相同  您可以通过两种方式更正您的查询

           INSERT INTO [dbo].[Table_1]
           ([columnA]
           ,[ColumnB]
           ,ColumnC)
     VALUES
           ('23',
           56,
           1)

OR

           INSERT INTO [dbo].[Table_1]
           ([ColumnB]
           ,ColumnC,
            [columnA])
     VALUES
           (23,
           56,
           'b')