Давайте сначала разберемся с некоторыми основами ...
Ваш второй WHEN
недоступен, так как более ранний WHEN
всегда будет true
(или ноль) перед вторым WHEN
(оба null).
RTRIM()
и LTRIM()
вернут NULL
только если аргумент NULL
, поэтому эти два выражения условия идентичны:
RTRIM(LTRIM(b.name)) IS NULL
b.name IS NULL
Удаление избыточного кода, включая недоступный WHEN
, позволит значительно упростить ваш код:
CASE
WHEN b.name IS NULL OR b.uniqueCode IS NULL
THEN isnull(b.uniqueCode,'') + isnull(b.name,'')
ELSE b.uniqueCode + '(' + b.name + ')'
END
Теперь, когдамы можем прочитать это ...
Наиболее вероятное объяснение состоит в том, что b.name
пусто , а не NULL
.