Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Sử dụng CASE trong Câu lệnh WHERE khi tham số có nhiều giá trị

Nếu @ServiceActivity của bạn là một cái gì đó giống như 1,2,3

Bạn có thể làm điều gì đó như thế này

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

Vì vậy, bạn định dạng các biến của mình

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,%'

Đối với trường hợp của bạn

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách nhận giá trị từ bước1 đến bước2 trong Công việc sql

  2. Đổi tên một cột trong SQL Server (T-SQL)

  3. So sánh các cột trong đó một cột tương tự với một phần của cột khác

  4. Đồng thời lạc quan:IsConcurrencyToken và RowVersion

  5. CREATE FILE gặp phải lỗi hệ điều hành 5 (không thể truy xuất văn bản cho lỗi này. Lý do:15105)