Jika memungkinkan, jangan gunakan varchar untuk hal semacam ini, gunakan tabel parameter yang dihargai sebagai gantinya.
Untuk menggunakan parameter nilai tabel, Anda harus terlebih dahulu mendeklarasikan tipe tabel yang ditentukan pengguna:
CREATE TYPE IntList As Table
(
IntValue int
)
Kemudian ubah prosedur tersimpan Anda untuk menerima variabel ini alih-alih nvarchar:
create proc Sp_ReturnPrdoucts
@BrandIds dbo.IntList readonly -- Note: readonly is a must!
AS
BEGIN
SELECT *
FROM tbl_Products as p
join tbl_Brands b on p.ProductBrandId=b.BrandId
join @BrandIds ON(b.BrandId = IntValue)
END
Masalahnya adalah bahwa IN()
operator mengharapkan daftar variabel yang dipisahkan dengan koma, sementara Anda memberikan satu variabel yang nilainya adalah string yang dipisahkan koma.
Jika Anda tidak dapat menggunakan parameter bernilai tabel, Anda dapat menggunakan fungsi pemisahan string di sql untuk mengonversi nilai varchar ke tabel int. ada banyak splitter di luar sana, saya akan merekomendasikan membaca artikel ini sebelum memilih satu.