我有一个包含以下文本的表格,我正在搜索的关键字是“搜索”。所以我写了一个查询
SELECT [ID]
,[TextValue]
FROM
[dbo].[SearchLike]
WHERE
[TextValue] LIKE '%Search%'
Q.1如何修改查询,以便只返回文本中具有“搜索”的记录,并且不应该采用“LSearch”。即根据图像前三个记录只返回。?
我有一个包含以下文本的表格,我正在搜索的关键字是“搜索”。所以我写了一个查询
SELECT [ID]
,[TextValue]
FROM
[dbo].[SearchLike]
WHERE
[TextValue] LIKE '%Search%'
Q.1如何修改查询,以便只返回文本中具有“搜索”的记录,并且不应该采用“LSearch”。即根据图像前三个记录只返回。?
使用喜欢
单行搜索:
如果没有填充,您将需要专门处理出现在字符串开头/结尾的字符串:
使用全文索引
Edit2,对于全文纯粹主义者
CREATE FULLTEXT INDEX
AUTO 选项的 MSDN 状态(默认)因此,它可能不会给出正确的结果。但是几秒钟后它会。
此外,对于多达几 10k 行,它将充分发挥作用:它可以扩展 O(n)。我在大约 25k 行的表上使用 LIKE,但用户知道如果他们以这种方式搜索(它位于“高级”页面上),它的性能会很差。我通过管理全文索引获得了权衡
全文搜索不是正确的解决方案,它是一种选择
注意:经验告诉我,SQL Server 中的全文索引具有严重的性能影响,即:仅在您确实需要并且知道自己在做什么时才实施!(@安德鲁·比克顿)
如果您的表将有大量的行,您可能想尝试使用 FULLTEXT 索引。它会更快,并且只会匹配确切的单词。
现在搜索您的文本:
更多关于:
我不知道 SQL Server 是否支持正则
\b
表达式(匹配单词边界)。而且您必须首先创建一个用户定义的函数以允许正则表达式匹配,但如果是这样,您可以匹配:如果没有,您仍然应该能够匹配: