Case Case в SQL с использованием Like - PullRequest
6 голосов
/ 19 июля 2011

Здравствуйте, у меня есть оператор SQL

INSERT INTO Foundation.TaxLiability.EmpowerSystemCalendarCode

SELECT SystemTax.SystemTaxID,
       EmpowerCalendarCode.CalendarCodeID
      ,CASE WHEN  EmpowerCalendarCode.CalendarName LIKE '%Monthly%' THEN 3
            WHEN  EmpowerCalendarCode.CalendarName LIKE '%Annual%' THEN 2
            WHEN  EmpowerCalendarCode.CalendarName LIKE '%Quarterly%' THEN 4
       ELSE 0
       END
       FROM Foundation.Common.SystemTax SystemTax, Foundation.TaxLiability.EmpowerCalendarCode EmpowerCalendarCode
WHERE SystemTax.EmpowerTaxCode = EmpowerCalendarCode.LongAgencyCode and SystemTax.EmpowerTaxType = EmpowerCalendarCode.EmpowerTaxType

Несмотря на то, что CalendarName имеет такие значения, как Quarterly (EOM), я все равно получаю 0. Любые идеи и предложения!

Ответы [ 3 ]

9 голосов
/ 19 июля 2011

Например, я бы обновил ваш SQL-код до этого, чтобы вы использовали JOIN в своем выражении SELECT вместо того, чтобы поместить его в предложение WHERE.

INSERT INTO Foundation.TaxLiability.EmpowerSystemCalendarCode

SELECT SystemTax.SystemTaxID,
       EmpowerCalendarCode.CalendarCodeID
      ,CASE WHEN  EmpowerCalendarCode.CalendarName LIKE '%Monthly%' THEN 3
            WHEN  EmpowerCalendarCode.CalendarName LIKE '%Annual%' THEN 2
            WHEN  EmpowerCalendarCode.CalendarName LIKE '%Quarterly%' THEN 4
       ELSE 0
       END
FROM Foundation.Common.SystemTax SystemTax
INNER JOIN Foundation.TaxLiability.EmpowerCalendarCode EmpowerCalendarCode
    ON SystemTax.EmpowerTaxCode = EmpowerCalendarCode.LongAgencyCode 
    AND SystemTax.EmpowerTaxType = EmpowerCalendarCode.EmpowerTaxType

два, что произойдет, если вы удалите INSERT INTO?

1 голос
/ 19 марта 2019

Вы также можете сделать это.Я думаю, что это будет работать.

select *
from table
where columnName like '%' + case when @varColumn is null then '' else @varColumn end  +  ' %'
0 голосов
/ 19 июля 2011
  1. Попробуйте исключить любые нулевые проблемы с ISNULL ():
  2. Попробуйте исключить любые проблемы с чувствительностью к регистру с помощью UPPER ():

    CASE WHEN верхний(isnull (EmpowerCalendarCode.CalendarName, 'none')) LIKE '% MONTHLY%' THEN 3 ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...