T-SQL CASE несколько условий один и тот же результат - PullRequest
4 голосов
/ 22 февраля 2012

Мне нужен в SQL эквивалентный код C # для

int caseSwitch = 1;
switch (caseSwitch)
{
case 1:
case 2:
case 3:
case 4:
    Console.WriteLine("x");
    break;
default:
    Console.WriteLine("Default case");
    break;
}

У меня несколько условий и один и тот же результат, и я не хочу писать весь код

case when cond1 then result1
     when cond2 then result1
     when cond3 then result1
     ....
     end

Есть идеи?спасибо

Ответы [ 3 ]

8 голосов
/ 22 февраля 2012

Примерно так:

DECLARE @caseSwitch INT=1
SELECT
    CASE WHEN @caseSwitch IN (1,2,3,4)
    THEN 'x'
    ELSE 'Default case'
END

В таблице выберите. Это было бы что-то вроде этого:

DECLARE @caseSwich INT=1
SELECT
    (
       CASE WHEN @caseSwich IN (1,2,3,4)
          THEN 'x'
          ELSE 'Default case'
       END
    ) AS someColumn
FROM
    yourTable
1 голос
/ 22 февраля 2012

Если набор значений мал и стабилен, используйте выражение CASE, в противном случае поместите значения в таблицу поиска, например,

SELECT T.*, L.lookup_value AS result
  FROM T JOIN LookupTable ON T.lookup_key = L.lookup_key
UNION
SELECT T.*, 'Default case' AS result
  FROM T
 WHERE lookup_key NOT IN ( SELECT lookup_key FROM LookupTable );
1 голос
/ 22 февраля 2012
DECLARE @i INT
SET @i = 2
SELECT CASE WHEN @i IN (1,2,3,4) THEN 'Hi' ELSE 'HiHi' END AS Result
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...