如何在 WHERE LIKE 中对多个值使用 SELECT 语句

How to use a SELECT statement in WHERE LIKE for multiple values

我正在尝试过滤掉 table 中的行,其中 [Description] 列包含另一个 table 中列表中的单词。

我已经走到这一步,然后意识到我根本不知道该怎么做:

SELECT 
  p.Description  --- a large amount of text
FROM
  Products p
WHERE 
  p.Description NOT LIKE 
(SELECT List.Word FROM List) --- pseudo code

所以我需要类似于 NOT IN 但实际上是 NOT LIKE 的东西。

这可能不需要我手动提取列表中的所有单词并执行 NOT LIKE '%sofa%' AND NOT LIKE '%cushion%' AND NOT LIKE '%chair%' 等等吗?

您可以检查 list 中是否不存在任何行,其中 description 类似于该行的 word

SELECT p.description
       FROM products p
       WHERE NOT EXISTS (SELECT *
                                FROM list l
                                WHERE p.description LIKE '%' + l.word + '%');

除了已发布的解决方案,您还可以使用以下变体:

SELECT p.Description
FROM   Products p
       LEFT JOIN (SELECT Test = '%'+Word+'%' FROM List) AS c
                 ON p.Description LIKE c.Test
WHERE  c.Test IS NULL;

test is here