请教这个CASE应用有没有有关问题
请问这个CASE应用有没有问题
update table set
qzj.kaigong_cs = (
case when src.KAIGONG_CS>qzj.kaigong_cs then src.KAIGONG_CS
when qzj.kaigong_cs IS NULL then src.KAIGONG_CS
when qzj.kaigong_cs=' ' THEN src.KAIGONG_CS
else qzj.kaigong_cs
end)
------解决方案--------------------
你这些别名是怎么来的就不得而知了,case when then when then else end 语法是这样的,但是is null和 =''就是一回事了
------解决方案--------------------
------解决方案--------------------
是两表关联更新吧?src里只有1条记录?多条的话肯定报错的,1条的话改写法
update table set
qzj.kaigong_cs = (
case when src.KAIGONG_CS>qzj.kaigong_cs then src.KAIGONG_CS
when qzj.kaigong_cs IS NULL then src.KAIGONG_CS
when qzj.kaigong_cs=' ' THEN src.KAIGONG_CS
else qzj.kaigong_cs
end)
------解决方案--------------------
你这些别名是怎么来的就不得而知了,case when then when then else end 语法是这样的,但是is null和 =''就是一回事了
------解决方案--------------------
--这是楼主你的SQL
update table set
qzj.kaigong_cs = (
case when src.KAIGONG_CS>qzj.kaigong_cs then src.KAIGONG_CS
when qzj.kaigong_cs IS NULL then src.KAIGONG_CS
when qzj.kaigong_cs=' ' THEN src.KAIGONG_CS
else qzj.kaigong_cs
end)
--qzj和src 这些别名是从哪里来的?这个语句是执行不了的。
--假如你的更新的table别名为qzj 但是src有事从哪里来的。
--楼上说的is null和=''是同一回事是错误的理解。null不属于任何值,不能和其他任何比较。
--类似于以下sql是完全没有问题的:
update table_simo
set name = (
case when id > 200 then 'name_'
else name end
)
--问题主要是你的别名
------解决方案--------------------
是两表关联更新吧?src里只有1条记录?多条的话肯定报错的,1条的话改写法