如何在 SQL 服务器查询中同时使用 LIKE 和 NOT LIKE

How to use LIKE and NOT LIKE together in a SQL Server query

我有一个 SQL 服务器 table Users 有一个列 codename 有很多记录,例如:

...
[LP]Luis
JoseLuis
[LP]Pedroso
Luis
PedroLuis
[LP]Maria
CarlosJose
MariaJose
[LP]Carlos
Pedro
...

我需要查询忽略所有包含 [LP]

codename 的搜索表单

我写了 运行 以下查询:

SELECT TOP (15)* 
FROM [Users] 
WHERE [codename] LIKE '%Luis%'
AND [codename] NOT LIKE '%[LP]%'

这个查询没有return任何东西。

我想获取(在此示例中)记录:

Luis
PedroLuis
JoseLuis

如果我查询:

SELECT TOP (15) * 
FROM [Users] 
WHERE [codename] LIKE '%Luis%'

我得到:

[LP]Luis
JoseLuis
Luis
PedroLuis

如果我添加到查询中:

AND [codename] NOT LIKE '%[LP]%'

我一无所获。

所有字符串都有 LP,这正是 %[LP]% 所寻找的。

一种方法是转义模式:

SELECT TOP (15) * 
FROM [Users] 
WHERE [codename] LIKE '%Luis%' AND
      [codename] NOT LIKE '%/[LP/]%' escape '/';