Hvis det er muligt, så brug ikke varchar til denne slags ting, brug en tabel værdisat parameter i stedet.
For at bruge en tabelværdiparameter skal du først erklære en brugerdefineret tabeltype:
CREATE TYPE IntList As Table
(
IntValue int
)
Skift derefter din lagrede procedure til at acceptere denne variabel i stedet for 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
Problemet er, at IN()
operator forventer en liste over variable adskilt af kommaer, mens du angiver en enkelt variabel, hvis værdi er en kommasepareret streng.
Hvis du ikke kan bruge en tabelværdiparameter, kan du bruge en strengopdelingsfunktion i sql til at konvertere værdien af varchar til en tabel med ints. der er mange splittere derude, jeg vil anbefale at læse denne artikel før du vælger en.