我需要从用户搜索“苹果不是”的表的“描述”列中获取“Apple”。 我写过类似的东西
set @ExactKey = N'The Apple'
set @NotKey =N'the'
SELECT R.ResourceId
FROM Resource R
WHERE Description LIKE @ExactKey OR ExternalIdentifier LIKE @ExactKey
AND ExternalIdentifier NOT LIKE @NotKey OR Description NOT LIKE @NotKey
这不起作用
答案 0 :(得分:4)
要使用LIKE
,您需要添加%
。
将搜索字符串更改为:
set @ExactKey = N'%The Apple%'
set @NotKey = N'%the%'
然而,这不起作用,除非您启用区分大小写,因为the
将与the
中的the apple
匹配。
答案 1 :(得分:1)
您需要为LIKE强制使用二进制或区分大小写的排序规则,并使用前导和尾随%
通配符(编辑:如ck所述)。
我也猜测你的AND / OR也是错误的,因为:
像
这样的东西WHERE
(
Description COLLATE Latin1_General_BIN LIKE @ExactKey
AND
Description COLLATE Latin1_General_BIN NOT LIKE @NotKey
)
OR
(
ExternalIdentifier COLLATE Latin1_General_BIN LIKE @ExactKey
AND
ExternalIdentifier COLLATE Latin1_General_BIN NOT LIKE @NotKey
)
但是你可以通过全文搜索更好。那么“理论”还是“什一税”呢?