我正在尝试比较两个小整数字段,以寻找差异。一个表是一个挂起的更改表,该表由一个批处理作业在夜间读取,然后在执行其他活动的同时更新另一个表。批处理作业有一些问题,我正在研究这些问题。我希望找到那些不同的值,并显示发生这种情况时挂起的表的值是什么。
给我带来麻烦的特定列(CO_FT_FREQ_DAY)在小整数字段中有空值,我认为这就是我的问题的原因。(或者它可能是一个挂起的添加,因此没有匹配值可以比较...)正如你所看到的,我已经尝试解决这个问题,但它仍然不起作用。
在此之前,我尝试过ifnull,但得到了相同的错误。我希望这能解决这个问题。
SELECT T342.clientID
,T342.TS_340
,case when (case when t342.CO_FT_FREQ_DAY is null then 0 else
t342.CO_FT_FREQ_DAY end) <>
(case when t340.CO_FT_FREQ_DAY is null then 0 else
t340.CO_FT_FREQ_DAY end)
then T342.CO_FT_FREQ_DAY
else 0
end as CO_FT_FREQ_DAY
FROM database.PendingChangeTable T342
left outer join database.CurrentTable T340
on T340.ClientID = T342.ClientID
and T340.TS_PK = T342.TS_340
WHERE t342.clientID in (clientID list);
DSNT408I SQLCODE = -420,错误:字符串参数值不是
ACCEPTABLE TO THE DECFLOAT FUNCTION
DSNT418I SQLSTATE = 22018 SQLSTATE返回代码
发布于 2015-02-05 02:02:56
呃找到问题了。不管是谁设计了这个表,都切换到了中途,并将这些新列定义为char字段,而我错过了这一点。因此,我需要将case语句中的值设置为'0‘,而不是0。
,case when (case when t342.CO_FT_FREQ_DAY is null then '0' else
t342.CO_FT_FREQ_DAY end) <>
(case when t340.CO_FT_FREQ_DAY is null then '0' else
t340.CO_FT_FREQ_DAY end)
then T342.CO_FT_FREQ_DAY
else '0'
end as CO_FT_FREQ_DAY
,case when ifnull(t342.CO_HT_FREQ_DAY,'0') <>
ifnull(t342.CO_HT_FREQ_DAY,'0')
then ifnull(T340.CO_HT_FREQ_DAY,'0')
else '0'
end as CO_HT_FREQ_DAY
所以今天给我的教训是,当你遇到这个错误时,一定要检查你的数据类型!
https://stackoverflow.com/questions/28326626
复制相似问题