Я использую оператор CASE в SQL, и я пытаюсь использовать инструкцию <>
в THEN. Но я получаю сообщение об ошибке, когда я использую инструкцию <>
в THEN.
Вот мой код SQL,
DECLARE @VAR CHAR(50) = 'SAMPLE'
SELECT * FROM [DB]
WHERE acct LIKE CASE WHEN @VAR = 'SAMPLE' THEN '88%' WHEN @VAR = 'SAMPLE2' THEN <> '88%' ELSE '%' END
Как это исправить?
Я бы перефразировал это как:
SELECT *
FROM [DB]
WHERE
(@VAR = 'SAMPLE' AND acct LIKE '88%') OR
(@VAR = 'SAMPLE2' AND acct NOT LIKE '88%') OR
(@VAR NOT IN ('SAMPLE', 'SAMPLE2'))
Обратите внимание на третье условие в WHERE
, соответствующее условию WHERE acct LIKE '%'
else вашего исходного выражения CASE
. То есть, если @VAR
не является SAMPLE
или SAMPLE2
, то это само по себе соответствует записи.
DECLARE @VAR CHAR(50) = 'SAMPLE'
SELECT * FROM [DB]
WHERE (acct LIKE '88%' AND @VAR = 'SAMPLE')
OR
(acct NOT LIKE '88%' AND @VAR = 'SAMPLE2')