我有一个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]%'
我一无所获。
答案 0 :(得分:10)
所有字符串都有L
或P
,这是%[LP]%
查找的内容。
一种方法是逃避模式:
SELECT TOP (15) *
FROM [Users]
WHERE [codename] LIKE '%Luis%' AND
[codename] NOT LIKE '%/[LP/]%' escape '/';