Sql server 2008 如何使用sql查询从逗号分隔的数字中查找匹配号?

Sql server 2008 如何使用sql查询从逗号分隔的数字中查找匹配号?,sql-server-2008,Sql Server 2008,我有一个SQL Server表,数据类型为varchar200,以逗号分隔,如下所示: 现在,我将参数(如逗号分隔的数字)传递给我的查询,以获得如下输出: Id MatchNumber 我尝试了以下SQL查询: DECLARE @Ids varchar(50); SET @Ids = '286,133,338,215,152,378,161,144,139,177'; select * from TblMMGameCard where Id IN (@Ids); 我想要一个如上表所

我有一个SQL Server表,数据类型为varchar200,以逗号分隔,如下所示:

现在,我将参数(如逗号分隔的数字)传递给我的查询,以获得如下输出:

Id      MatchNumber
我尝试了以下SQL查询:

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

我想要一个如上表所示的输出。怎么办?

SQL Server不支持宏替换。一个选项是解析搜索字符串,然后通过连接测试命中率

范例


谢谢你,约翰Cappelletti@Abhilash.J.A总是乐于助人
DECLARE @Ids varchar(50);
SET @Ids = '286,133,338,215,152,378,161,144,139,177';
select * from TblMMGameCard where Id IN (@Ids);
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