使用动态列表将左外部连接的 on 子句与 LIKE 关键字一起使用



>我在表中有一列可以有一个字符串CSV,我想用 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似乎仅适用于完全匹配而不是通配符。

提前谢谢。

使用 EXISTS 检查 e.value 是否像任何 t.value(通配符)

SELECT *
FROM dbo.table e
WHERE EXISTS (
    SELECT *
    FROM @t t
    WHERE e.value LIKE '%' + t.value + '%')

最新更新