Using CASE in WHERE Statement when parameter has multiple values

后端 未结 3 2019
北海茫月
北海茫月 2021-01-24 00:07

I have a problem which I think relates to having a multiple value parameter.

In my TblActivity there are two fields TblActivity.ActivityServActId

3条回答
  •  误落风尘
    2021-01-24 01:02

    If your @ServiceActivity is something like 1,2,3

    You can do something like this

    WHERE  `,1,2,3,` LIKE `%,1,%` 
    

    So you format your variables

    WHERE  ',' + @ServiceActivity + ',' LIKE '%,' + ID + ',%'
    

    SQL FIDDLE DEMO

    SELECT *
    FROM 
        (SELECT '1,2,3,4' as X UNION ALL
         SELECT '2,3,4,5' as X UNION ALL
         SELECT '3,4,5,6' as X UNION ALL
         SELECT '1,3,4,5' as X 
         ) as T
    WHERE ',' + X + ','  LIKE  '%,1,%'
    

    For Your Case

    (CASE WHEN @YESNOActivity = 'Yes' 
               THEN ',' + @ServiceActivity + ','
               ELSE NULL 
     END)
    LIKE
    (CASE WHEN @YESNOActivity = 'Yes' 
               THEN '%,' + TblActivity.ActivityServActId + ',%'
               ELSE 0 
     END) 
    

提交回复
热议问题