Оператор CASE не принимает значение NULL - PullRequest
0 голосов
/ 06 июля 2018

Я написал следующее утверждение CASE

CASE PaymentType
  WHEN NULL THEN 'Check'
  WHEN 512 THEN 'Check'
  WHEN 0 THEN 'Check'
  WHEN 32 THEN 'ACH'
  WHEN 544 THEN 'ACH'
  ELSE 'Card'
  END AS 'Current Acceptance',

Значения NULL попадают в категорию ELSE (например, карта), а не в «Проверка», как ожидалось.

Что было бы просто изменить, чтобы значения NULL возвращали 'check'?

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Я думаю, что TSQL требователен к "= NULL" и "IS NULL" в этом случае.

Попробуйте это:

CASE 
  WHEN PaymentType IS NULL THEN 'Check'
  WHEN PaymentType = 512 THEN 'Check'
  WHEN PaymentType = 0 THEN 'Check'
  WHEN PaymentType = 32 THEN 'ACH'
  WHEN PaymentType = 544 THEN 'ACH'
  ELSE 'Card'
 END AS 'Current Acceptance'
0 голосов
/ 06 июля 2018

не работает. NULL даже не соответствует NULL в выражении case.

Использовать явные сравнения:

(CASE WHEN PaymentType IS NULL OR
           PaymentType IN (512, 0)
      THEN 'Check'
      WHEN PaymentTYpe IN (32, 544)
      THEN 'ACH'
      ELSE 'Card'
 END) AS Current_Acceptance,
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...