Предположим, я создаю хранимую процедуру в моем SQL Server для таблицы my_table
.
Целью этой хранимой процедуры является получение входного ключевого параметра @keyword nvarchar(255)
и разделенной запятыми строки '@vehicleList nvarchar (266)'.
@catList
в основном содержит значения того, какие флажки фильтров были проверены на переднем конце (варианты: автомобиль, грузовик, мотоцикл).Таким образом, список транспортных средств может выглядеть следующим образом:
@vehicleList = "car, truck, motorcycle"
или это
"car, motorcycle"
или это
"truck"
Эти имена флажков совпадают с именами столбцов вmy_table
.Я хочу вернуть определенные столбцы из my_table, основываясь на том, что мой параметр @keyword
находится в одном из столбцов, но ТОЛЬКО если этот столбец находится в @vehicleList
.
Если бы @vehicleList всегда был 'Car, Truck, Motorcyle', я мог бы сделать это:
SELECT ID, T_Number, Car, Truck, Motorcycle, Date
FROM T_Ticket
WHERE Car Like '%' + @Keyword + '%'
UNION ALL
SELECT ID, T_Number, Car, Truck, Motorcycle, Date
FROM T_Ticket
WHERE Truck Like '%' + @Keyword + '%'
UNION ALL
SELECT ID, T_Number, Car, Truck, Motorcycle, Date
FROM T_Ticket
WHERE Motorcycle Like '%' + @Keyword + '%'
Мой вопрос, как бы я сделал это, основываясь на переменной, запятойразделенная строка, которая будет отличаться при каждом вызове хранимой процедуры?