Я предполагаю, что вы хотите использовать одну переменную для обработки ввода либо одной переменной, либо нескольких, либо всех в терминах региона, поэтому одна из причин состоит в том, чтобы объявить переменную и использовать разделенный запятыми подход.
ВашВходная переменная будет выглядеть следующим образом: -
Declare @Region varchar(100)='A,B,C' --3 regions comma seperated
--Declare @Region varchar(100)='A' -- or one only
--Declare @Region varchar(100)=NULL -- or null for all,
И я предполагаю, что у вас есть таблица регионов, в которой есть другие столбцы, которые вы хотели бы вернуть, поэтому я собираюсь принять таблицу и некоторые данные для тестирования.(вы не будете этого шага)
Declare @RegionTable Table (RegionId int,Region varchar(50), otherdata varchar(100))
insert into @RegionTable values
(1,'A','AAAA'),
(2,'B','BBBB'),
(3,'C','CCCC'),
(4,'D','DDDD'),
(5,'E','EEEE'),
(6,'F','FFFF')
Теперь нам нужно выбрать, который будет обрабатывать одну переменную, несколько или все.это поможет: -
Select * from @RegionTable r where Region in (select cs.[Value] from STRING_SPLIT (@Region, ',') cs ) or @Region is null
Результаты будут кратны, как показано ниже: -
RegionId Region otherdata
1 A AAAA
2 B BBBB
3 C CCCC