SQL Server 2008 R2:准备动态 WILDCARD

SQL Server 2008 R2: Prepare dynamic WILDCARD

我有以下 table Test_01 两列,即 ColaColb

我有一种情况,我需要将 LIKEIN 用于多个值。

Table:

SELECT * FROM Test_01;

Cola    Colb 
------------
1       A
11      B
22      C

示例

DECLARE @a VARCHAR(max) = 'A,B,C'
DECLARE @sql VARCHAR(max) = ''

我的失败尝试:哪个不起作用

SET @SQL = 'SELECT * from test_01 
        WHERE Colb LIKE IN (''%'+REPLACE(@a,',','%'',''%')+'%'')';
PRINT(@sql);

参考THIS.

终于知道需要准备一个LIKE条件OR

如何准备如下所示的动态WILDCARD?

SELECT * FROM Test_01
WHERE 
Colb LIKE '%A%' OR 
Colb LIKE '%B%' OR 
Colb LIKE '%C%' ; 

我正在使用 table 变量来解析变量 @a 值并将它们存储为行。 检查在 main table test_01 和 table 变量之间使用 inner join with like 查看是否有任何匹配的记录。

DECLARE @a VARCHAR(max) = 'A,B,C';

declare @tablevariable table
(
colb varchar(20)
);

INSERT INTO @tablevariable
SELECT Split.a.value('.', 'VARCHAR(100)') AS String  
 FROM  (SELECT  
         CAST ('<M>' + REPLACE(@a, ',', '</M><M>') + '</M>' AS XML) AS String  
    ) AS A CROSS APPLY String.nodes ('/M') AS Split(a);


select tb1.* from test_01 tb1 inner join @tablevariable tb2
on tb1.colb like '%'+tb2.colb+'%'