Как найти номер совпадения из чисел через запятую, используя SQL-запрос? - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть таблица SQL Server с разделенным запятыми числом в виде типа данных varchar (200), например:

enter image description here

Теперь я передаю параметр как запятуюразделенный номер в моем запросе для получения вывода, как показано ниже:

Id      MatchNumber
1       286
1       133
1       338
3       152
8       161
8       133
10      144
10      139
10      177

Я пробовал этот запрос SQL:

DECLARE @Ids varchar(50);
SET @Ids = '286,133,338,215,152,378,161,144,139,177';
select * from TblMMGameCard where Id IN (@Ids);

Я хочу вывод, как в таблице выше.Как я могу это сделать?

1 Ответ

0 голосов
/ 12 февраля 2019

SQL Server не поддерживает подстановку макросов.Один из вариантов - проанализировать строку поиска и затем проверить наличие попадания через JOIN

Пример

DECLARE @Ids varchar(50) = '286,530,338,215';

Select A.ID
      ,MatchNumber = B.RetVal 
 From  TblMMGameCard  A
 Join (
        Select RetVal = ltrim(rtrim(B.i.value('(./text())[1]', 'varchar(50)')))
        From  (values  (cast('<x>' + replace(@IDs,',','</x><x>')+'</x>' as xml)))A(x)
        Cross Apply x.nodes('x') AS B(i)
      ) B  on charindex(','+RetVal+',',','+[cardNumbers]+',')>0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...