У меня есть следующее case
выражение внутри запроса, которое дает null
для столбца per_pack_qty
:
select
global_override.SHIS8,
case
when sbsize = 8 and
global_override.SHIS8 is not null and
trim(global_override.SHIS8) not in ('', '0')
then global_override.SHIS8
else sbsizu
end as per_pack_qty
from
order s
left join order_override on order_override.orfile = s.sbfile
left join global_override on global_override.shfile = s.sbfile
where
sbfile in (5859480, 5859490)
and SBBX0 = 343
limit 1
Выполнение выходов per_pack_qty null
и SHIS8 "0".
Однако, если я поставлю конкат около global_override.SHIS8
, например:
[...] then concat(global_override.SHIS8, '') [...]
Тогда дело разрешится до sbsizu
.
Приводит ли значение NULL в качестве подвыражения then
к тому, что все выражение case становится нулевым?Является ли DB2 AS400 требовательной ко всем ветвям в выражении case одного и того же типа?Почему оболочка concat
делает эту работу?