提问者:小点点

SQL-整数值不正确


我目前正在做一个Airflow项目,其中一个DAG正在触发这个SQL查询:

select CONVERT(date, GETDATE()) as datum,
    sum(convert(int, fertig))/convert(float, count(*)) as servicegrad,
    count(*) as position, 
    sum(Anzahl) as positionsdetails, 
    sum(convert(int, fertig)) as fertig, CASE
        WHEN (Empfänger LIKE '%empfänger1%' or 
            Empfänger LIKE '%empfänger2%' or 
            Empfänger LIKE '%empfänger3%' or 
            Empfänger LIKE '%empfänger4%' or 
            Empfänger LIKE '%empfänger5%') THEN 'lager1'
        WHEN (Empfänger LIKE '%empfänger6%' or Empfänger LIKE '%empfänger7%' or  
        Empfänger LIKE '%empfänger8%' or Empfänger LIKE '%9%') THEN 'lager2'
        WHEN (Empfänger LIKE N'%empfänger10%' or
        Empfänger LIKE '%empfänger11%' or 
        Empfänger LIKE '%empfänger11%' or 
        Empfänger LIKE '%empfänger12%' or 
        Empfänger LIKE '%empfänger13%') THEN 'Lager3'


        ELSE 'lager4' 
    END as typ from wa left join (
        select count(*) as Anzahl, WaID from wadetails 
        group by WaID
    ) as wad on wad.WaID = wa.ID
where (CONVERT(DATE, ABTermin) > CONVERT(date,DATEADD(day, -1,GETDATE())) 
and
CONVERT(DATE, ABTermin) < CONVERT(date,DATEADD(day, 1,GETDATE())))
group by 
    CASE
        WHEN (Empfänger LIKE '%empfänger1%' or 
            Empfänger LIKE '%empfänger2%' or 
            Empfänger LIKE '%empfänger3%' or 
            Empfänger LIKE '%empfänger4%' or 
            Empfänger LIKE '%empfänger5%') THEN 'lager1'
        WHEN (Empfänger LIKE '%empfänger6%' or Empfänger LIKE '%empfänger7%' or  
        Empfänger LIKE '%empfänger8%' or Empfänger LIKE '%9%') THEN 'lager2'
        WHEN (Empfänger LIKE N'%empfänger10%' or
        Empfänger LIKE '%empfänger11%' or 
        Empfänger LIKE '%empfänger11%' or 
        Empfänger LIKE '%empfänger12%' or 
        Empfänger LIKE '%empfänger13%') THEN 'Lager3'


        ELSE 'lager4'
    END

该查询应该将数据从Mssql数据库传输到Mysql数据库。但当它运行时,我会得到以下错误:

_mysql_exceptions.OperationalError: (1366, "Incorrect integer value: 'lager4' for column 'fertig' at row 1")

我想我理解错误的含义,值'Lager4'应该写入列typ中,但被写入列fertig中。但我似乎无法在查询中找到导致错误的问题。


共1个答案

匿名用户

这不能回答你的问题,但它会提示你去哪里看。

如果您得到一个MySQL错误,那么代码在SQL Server中运行良好。然而,问题是您将这些值插入到MySQL中。

令人高兴的是,这仅仅意味着您需要查看select子句。您需要查看MySQL中列的类型,并确定哪些列是ints。

那么,转换就有问题了。可能性有:

  • 数据
  • 费尔蒂格
  • Anzal
  • 类型

当您知道这些列中哪些是整数时,您可以进一步研究。