Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Menggunakan CASE dalam Pernyataan WHERE ketika parameter memiliki banyak nilai

Jika @ServiceActivity . Anda adalah sesuatu seperti 1,2,3

Anda dapat melakukan sesuatu seperti ini

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

Jadi Anda memformat variabel Anda

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

Untuk Kasus Anda

(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. Bisakah kita menjalankan skrip SQL menggunakan migrasi kode pertama?

  2. Pengembangan Mesin Virtual Azure untuk Penggunaan SQL Server

  3. Panggilan asinkron dari prosedur tersimpan SQL Server di C#

  4. Bagaimana cara mengonversi DateTime ke VarChar

  5. Pilih baris teratas hingga nilai di kolom tertentu muncul dua kali