3

我在表中有一个可以包含字符串的列CSV,我想使用 LIKE 对所有这些值运行查询,该 LIKE 是外连接的 ON 子句的一部分。

DECLARE @to VARCHAR(max) = (SELECT value FROM dbo.table WHERE id = 'key');
DECLARE @t table ( value varchar(max) )
INSERT INTO @t SELECT item FROM fn_csv_splitstring ( @to , ',' )

获得所有 CSV 值后,我现在希望将临时表中的每个值用作 LIKE 关键字的表达式,类似于以下选择

 SELECT * FROM 
 dbo.table e 
 where e.value LIKE '%' + (SELECT value FROM [@t]) + '%'

确切的语句用于左外连接语句,ON 子句链接两个表行 ID e.id = t.id,然后有一个附加的 AND 表达式 AND e.value LIKE 'col%'此时我需要能够将我的临时表中的所有行作为一堆OR LIKE '%'或其他东西充当LIKE '%' + (SELECT value FROM [@t]) + '%'

我已经尝试过IN关键字,但IN似乎只适用于完全匹配而不是通配符。

提前致谢。

4

1 回答 1

1

使用 EXISTS 检查 e.value 是否类似于 ANY t.value(通配符)

SELECT *
FROM dbo.table e
WHERE EXISTS (
    SELECT *
    FROM @t t
    WHERE e.value LIKE '%' + t.value + '%')
于 2012-10-01T12:27:45.650 回答