【问题标题】:SQLCODE: -420, SQLSTATE: 22018, SQLERRMC: BIGINTSQLCODE:-420,SQLSTATE:22018,SQLERRMC:BIGINT
【发布时间】:2011-05-16 21:50:21
【问题描述】:

[运行 DB2 UDB 版本 9] 为什么这条 SQL 语句有效

SELECT 
       CASE
       WHEN A.DAILYDOWNLOADSIZE is null THEN 0
    else bigint(A.DAILYDOWNLOADSIZE)
       END "DAILYDOWNLOADSIZE",
       CASE
       WHEN A.DAILYDOWNLOADTIME is null THEN 0
    else bigint(A.DAILYDOWNLOADTIME)
       END "DAILYDOWNLOADTIME"
FROM 
EDMPROD.MQT_STB_FACTS A 

...当这个没有时

SELECT DISTINCT 
bigint(A.CAMID) AS "CAMID",
bigint(A.RID) AS "RID",
A.SOFTWAREVERSION,
A.MODELNUMBER,
A.MANUFACTURERID,
A.MODDATE,
A.POSTTIME,
A.DELIVERYMETHOD,
bigint(A.UPTIME )  AS "UPTIME",
bigint(A.NUMBEROFRESETSSINCELASTSWDL )  AS "NUMBEROFRESETSSINCELASTSWDL",
bigint(A.NUMBEROFSEARCHSIGNALOSDTUNER1 ) AS "NUMBEROFSEARCHSIGNALOSDTUNER1",
bigint(A.NUMBEROFSEARCHSIGNALOSDTUNER2 ) AS "NUMBEROFSEARCHSIGNALOSDTUNER2",
bigint(A.NUMBEROFUSERDISKREFORMATS ) AS "NUMBEROFUSERDISKREFORMATS",
bigint(A.NUMBEROFSYSTEMDISKREFORMATS ) AS "NUMBEROFSYSTEMDISKREFORMATS",
bigint(A.NUMBEROFRECOVEREDDISKERRORS ) AS "NUMBEROFRECOVEREDDISKERRORS",
IPINFO,
       CASE
       WHEN A.DAILYDOWNLOADSIZE is null THEN 0
    else bigint(A.DAILYDOWNLOADSIZE)
       END "DAILYDOWNLOADSIZE",
       CASE
       WHEN A.DAILYDOWNLOADTIME is null THEN 0
    else bigint(A.DAILYDOWNLOADTIME)
       END "DAILYDOWNLOADTIME",
bigint(A.TOTALNUMBEROFDOWNLOADSSTARTED ) AS "TOTALNUMBEROFDOWNLOADSSTARTED",
bigint(A.TOTALNUMOFCOMPLETEDDLS ) AS "TOTALNUMOFCOMPLETEDDLS",
CURRENT_DATE AS "LOAD_DATE"
FROM 
EDMPROD.MQT_STB_FACTS A 

我得到一个错误 SQL0420N 在 函数“BIGINT”。 SQLSTATE=22018

通过对查询进行故障排除,我确认罪魁祸首是 DAILYDOWNLOADSIZE 和 DAILYDOWNLOADTIME 这两列。两者都必须从 character(15) 转换为 bigint。

什么是第二条 SQL 语句不起作用???

【问题讨论】:

    标签: db2


    【解决方案1】:

    我对此失去了理智,因此我对暂存表 (EDMPROD.MQT_STB_FACTS) 做了一个简单的更改。

    我没有将列输入为字符,然后将它们转换为 bigint,而是删除并重新创建了我的表,并将数据类型设置为 BIGINT(8)。

    我从我的 SQL 语句中删除了铸件,错误就消失了。

    去图…………

    【讨论】:

    • 这不是一个优雅的解决方案。我有同样的问题,我无法解决。你有没有找到其他方法?
    • 在数据库中使用正确的数据类型是我认为优雅的方式,因此我们不得不对此持不同意见。使用正确的数据类型是一种很好的做法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-22
    • 2020-09-28
    • 1970-01-01
    相关资源
    最近更新 更多