SQL Server store multiple values in sql variable SQL Server store multiple values in sql variable sql-server sql-server

SQL Server store multiple values in sql variable


You can use a table variable:

declare @caroptions table(    car varchar(1000))insert into @caroptions values ('BMW')insert into @caroptions values ('Toyota')insert into @caroptions values ('Nissan')select * from cars where make in (select car from @caroptions)


I wrote about this here if you want to see it in detail. In the mean time, you can't do it exactly how you are thinking.

Your choices are:

Using the LIKE command:

DECLARE @CarOptions varchar(100)SET @CarOptions = 'Ford, Nisan, Toyota'SELECT *FROM CarsWHERE ','+@CarOptions+',' LIKE ',%'+CAST(Make AS varchar)+',%'

A spliter function

DECLARE @CarOptions varchar(100)SET @CarOptions = 'Ford, Nisan, Toyota'SELECT Cars.*FROM CarsJOIN DelimitedSplit8K (@CarOptions,',') SplitString    ON Cars.Make = SplitString.Item

Dyanmic SQL

DECLARE @CarOptions varchar(100)SET @CarOptions = 'Ford, Nisan, Toyota'DECLARE @sql nvarchar(1000)SET @sql = 'SELECT * ' +             'FROM Cars ' +             'WHERE Make IN ('+@CarOptions+') 'EXEC sp_executesql @sql

In the mean time your best option is going to be to get rid of the variable completely.

SELECT * FROM cars WHERE make IN (SELECT make FROM carsforsale );


Use CTE for storing multiple values into a single variable.

;WITH DATA1 AS (    select car_name    from cars     where make in ('BMW', 'Toyota', 'Nissan'))SELECT @car_name = CONCAT(@car_name,',',car_name)FROM DATA1select @car_name