代码之家  ›  专栏  ›  技术社区  ›  Red_Phoenix

SQL Server:将数据类型varchar转换为数字时出错

  •  0
  • Red_Phoenix  · 技术社区  · 11 年前

    情况是这样的。我有一个SQL Server表,其中包含以下列:

    TaskOrder (varchar(50), null)
    Labor (decimal(18,2), null)
    LaborCLIN (varchar(50), null)
    

    我正在创建一个传递参数的存储过程: @TaskOrder

    我创建了一个临时表,如下所示:

    declare @miprfin table
    (
        TaskOdr varchar(50),
        Labor decimal(18,2),
        LaborClin varchar(50)
    )
    

    运行以下查询时:

    insert into @miprfin
       select TaskOrder, LaborCLIN, sum(labor) as labor
       from MIPRFIN 
       where TaskOrder = @TaskOrder
       group by TaskOrder, LaborCLIN
       order by LaborCLIN
    

    我收到以下错误消息:

    消息8114,级别16,状态5,行404
    将数据类型varchar转换为数字时出错。

    我看不出它在哪里试图转换任何数据。

    我正在使用SQL Server 2012 Management Studio

    1 回复  |  直到 11 年前
        1
  •  3
  •   Gordon Linoff    11 年前

    您应该始终将列放在 insert ,这就是为什么:

    insert into @miprfin(TaskOdr, LaborCLIN, Labor)
        select TaskOrder, LaborCLIN, sum(labor) as labor
        from MIPRFIN 
        where TaskOrder = @TaskOrder
        group by TaskOrder, LaborCLIN
        order by LaborCLIN;
    

    你在放 labor 进入 laborclin 字段,反之亦然。因此出现了错误。