T-SQL СЛУЧАЙ несколько условий такой же результат

голоса
4

мне нужно в 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

есть идеи ? благодаря

Задан 22/02/2012 в 06:18
пользователем
На других языках...                            


3 ответов

голоса
8

Что-то вроде этого:

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
Ответил 22/02/2012 в 06:23
источник пользователем

голоса
1
DECLARE @i INT
SET @i = 2
SELECT CASE WHEN @i IN (1,2,3,4) THEN 'Hi' ELSE 'HiHi' END AS Result
Ответил 22/02/2012 в 06:24
источник пользователем

голоса
1

Если множество значений невелики и стабильны , то использовать 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 );
Ответил 22/02/2012 в 06:33
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more