如何在SQL Server查询中使用LIKE和NOT LIKE

时间:2016-03-02 02:52:38

标签: sql sql-server database sql-server-2014

我有一个SQL Server表Users,其中列codename包含大量记录,例如:

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

我需要查询忽略包含codename

的所有[LP]的搜索表单

我编写并运行以下查询:

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

此查询不会返回任何内容。

我想得到(在这个例子中)记录:

Luis
PedroLuis
JoseLuis

如果我查询:

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

我明白了:

[LP]Luis
JoseLuis
Luis
PedroLuis

如果我添加到查询中:

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

我一无所获。

1 个答案:

答案 0 :(得分:10)

所有字符串都有LP,这是%[LP]%查找的内容。

一种方法是逃避模式:

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