3

Here is my test T-SQL.

DECLARE @TestVal INT

SET @TestVal = 1

SELECT 
   CASE @TestVal
      WHEN (1 | 2 | 6) THEN 'First' // I would like to check 1 or 2 or 6.
      WHEN 3 THEN 'Second'
      WHEN 4 THEN 'Third'
      ELSE 'Other'
   END

The current result is 'Other'.

I would like to get the result as 'First'. How can I use (OR statement) in my T-SQL.

Best regards

marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
Lamin
  • 109
  • 2
  • 13
  • possible duplicate of [SQL Server: CASE WHEN OR THEN ELSE END => the OR is not supported](http://stackoverflow.com/questions/5487892/sql-server-case-when-or-then-else-end-the-or-is-not-supported) – Cᴏʀʏ Apr 14 '15 at 02:09

3 Answers3

6

Use the condition form of case:

SELECT (CASE WHEN @TestVal IN (1, 2, 6) THEN 'First' 
             WHEN @TestVal = 3 THEN 'Second'
             WHEN @TestVal = 4 THEN 'Third'
             ELSE 'Other'
        END)
Gordon Linoff
  • 1,242,037
  • 58
  • 646
  • 786
2

Try this instead:

SELECT
    CASE WHEN @TestVal IN (1, 2, 6) THEN 'First'
         WHEN @TestVal = 3 THEN 'Second'
         WHEN @TestVal = 4 THEN 'Third'
         ELSE 'Other'
    END
Cᴏʀʏ
  • 105,112
  • 20
  • 162
  • 194
2

Above answers are correct also you can use OR like this:

DECLARE @TestVal INT

SET @TestVal = 2

SELECT (CASE WHEN (@TestVal = 1 OR @TestVal=2 OR @TestVal=6) THEN 'First' 
             WHEN @TestVal = 3 THEN 'Second'
             WHEN @TestVal = 4 THEN 'Third'
             ELSE 'Other'
        END)