如何在 SQL Server 查询中同时使用 LIKE 和 NOT LIKE
Posted
技术标签:
【中文标题】如何在 SQL Server 查询中同时使用 LIKE 和 NOT LIKE【英文标题】:How to use LIKE and NOT LIKE together in a SQL Server query 【发布时间】:2016-03-02 02:52:38 【问题描述】:我有一个 SQL Server 表 Users
,其中有一列 codename
有很多记录,例如:
...
[LP]Luis
JoseLuis
[LP]Pedroso
Luis
PedroLuis
[LP]Maria
CarlosJose
MariaJose
[LP]Carlos
Pedro
...
我需要查询一个忽略所有包含[LP]
s 的codename
s 的搜索表单
我编写并运行了以下查询:
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】:所有字符串都有L
或P
,这是%[LP]%
寻找的。p>
一种方法是转义模式:
SELECT TOP (15) *
FROM [Users]
WHERE [codename] LIKE '%Luis%' AND
[codename] NOT LIKE '%/[LP/]%' escape '/';
【讨论】:
赞成。您也可以通过将[
括在[]
中来逃避[
,即codename NOT LIKE '%[[]LP]%'
。
好吧,我不知道 [] 被用作通配符,那是我的错误。这两种解决方案都可以正常工作。我将使用@Felix-Pamittan 的解决方案。谢谢!
@Gordon Linoff,当我们在类似查询中使用起始 % 通配符时,是否会使用该列的索引?如果不是如何克服这个问题?
@RGS 。 . .仅当模式不以通配符开头时,LIKE
才会使用字符串列上的标准索引。以上是关于如何在 SQL Server 查询中同时使用 LIKE 和 NOT LIKE的主要内容,如果未能解决你的问题,请参考以下文章
传递查询如何在Access中使用SQL Server数据库引擎进行查询
传递查询如何在Access中使用SQL Server数据库引擎进行查询