CASE WHEN

[复制链接]
查看11 | 回复6 | 2008-1-13 01:07:16 | 显示全部楼层 |阅读模式
%db2 update TB_GCMX_SF set tt=case when substr('tl',2,2)='GJ' then '010' when substr('tl',2,2)='DD' then '020' when substr('tl',2,2)='VB' then '030' when substr('tl',2,2)='CH' then '040' when substr('tl',2,2)='NK' then '050' when substr('tl',2,2)='SF' then '060' when substr('tl',2,4)='MLSF' then '070' else '' end where ts='$bh$' #
从DB2传数据到ORA ,在配置文件中,这句话该如何来实现呢?
按上面的写法当substr('tl',2,4)='MLSF' 总是得不到正确的结果'070', 总是得了'060'


%db2 update TB_GCMX_SF set tt=case when (substr('tl',2,2)='GJ' and substr('tl',2,4)'MLSF' ) then '010' when (substr('tl',2,2)='DD'and substr('tl',2,4)'MLSF' )then '020' when (substr('tl',2,2)='VB' and substr('tl',2,4)'MLSF' )then '030' when (substr('tl',2,2)='CH'and substr('tl',2,4)'MLSF' )then '040' when (substr('tl',2,2)='NK' then '050' and substr('tl',2,4)'MLSF' ) when (substr('tl',2,2)='SF'and substr('tl',2,4)'MLSF' ) then '060'else ' 070' end where ts='$bh$' #
这样写为什么也是不行呢?


回复

使用道具 举报

千问 | 2008-1-13 01:07:16 | 显示全部楼层
请注意,Oracle 中 Null 的一些特殊性……
具体自己google 一下……
回复

使用道具 举报

千问 | 2008-1-13 01:07:16 | 显示全部楼层
你是说会是因为有NULL值的出现引起的吗?


可是我这里DB2中的字段'TL'中肯定会有值的,传过来对应ORA中的''TT'中也应该是可以有值写入的啊
回复

使用道具 举报

千问 | 2008-1-13 01:07:16 | 显示全部楼层
还有就是在运行的时候无论是哪一种都不会报错,只是当应该取到'070'时总取到'060'
回复

使用道具 举报

千问 | 2008-1-13 01:07:16 | 显示全部楼层
我也看不懂,最好能有个'tl'的输入值示例,如果不是NULL值,在楼主的情况中怎么会 substr('tl',2,2)='SF' 先于 substr('tl',2,4)'MLSF' 而match呢?请问楼主如何解决的?
回复

使用道具 举报

千问 | 2008-1-13 01:07:16 | 显示全部楼层
这个是应该是DB2的写法,你最好把字段唯一取出看一下
回复

使用道具 举报

千问 | 2008-1-13 01:07:16 | 显示全部楼层
update TB_GCMX_SF
set tt=

case

when substr(tl,2,2)='GJ' then '010'

when substr(tl,2,2)='DD' then '020'

when substr(tl,2,2)='VB' then '030'

when substr(tl,2,2)='CH' then '040'

when substr(tl,2,2)='NK' then '050'

when substr(tl,2,2)='SF' and substr(tl,2,4)'MLSF' then '060'

when substr(tl,2,4)='MLSF' then '070'

else '' end
where ts='$bh$'
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行