当前位置: 首页 > 面试题库 >

如何使sql搜索查询更强大?

穆俊杰
2023-03-14
问题内容

我编写了此sql查询以在表中进行搜索:

SELECT * FROM TableName WHERE Name LIKE '%spa%'

该表包含以下行,例如:

  1. 太空公司。
  2. 温泉度假胜地。
  3. 温泉酒店。
  4. 备件。
  5. 没有主题关键字。

我想知道如何编辑此查询,以便它返回如下排序的结果:

2温泉度假村

3号温泉酒店

1太空公司

4备件

表示首先包含确切单词的项目,然后包含类似词语的项目。


问题答案:

就像是

Select * from TableName where Name Like 'Spa%'
ORDER BY case when soundex(name) = soundex('Spa') then '1' else soundex(name) end

应该可以。

实际上这会更好

Select * from TableName where Name Like 'Spa%'
ORDER BY DIFFERENCE(name, 'Spa') desc;

FWIW我做了一些快速测试,如果“名称”在NONCLUSTERED
INDEX中,则SQL将使用索引,并且不进行表扫描。同样,LIKE似乎比charindex使用更少的资源(charindex返回的期望结果更少)。在sql
2000上进行了测试



 类似资料:
  • 问题内容: 我正在根据CS50的网络系列创建一个应用程序,该程序要求我仅使用原始SQL查询而不是ORM。 我正在尝试提供一个搜索功能,用户可以在其中查找存储在数据库中的书籍列表。我想让他们查询名为“ books”的表格中的ISBN,标题,作者列 目前,它确实拍摄了“ GET”请求,没有问题,但是它没有返回任何数据,我认为问题出在我编写的SQL行中。 这是路线: 这是我的模板 任何人都可以发现问题吗

  • 我的任务是使用lucene在我们的产品表中搜索。我已经创建了一个索引,正在使用带有多个字段的QueryParser进行搜索,但结果不是我所需要的。我有一个存储为LM10的产品,但如果搜索词是LM 10,我希望能够找到它,但如果搜索词是Fred LM10或Fred LM 10,它也必须能够匹配。你知道我如何在Lucene做到这一点吗。 提前谢谢

  • 我有以下格式的弹性搜索文档 } } 我的要求是,当我搜索特定字符串(string.string)时,我只想获得该字符串的FileOffSet(string.FileOffSet)。我该怎么做? 谢谢

  • 问题内容: 我想构建一个由Instagram照片驱动的小型“即时图片搜索”应用。就像Google Instant,您可以在其中开始键入内容,并且在键入更多字母时显示/更新结果。 您可以看到由Google图片提供支持的实时演示应用。我知道使用大型引擎(Google,Yahoo!,Bing)是可行的,但我不知道Instagram是否允许这样做。任何熟悉API的人都可以提供帮助吗? 如果无法通过有意义的

  • 问题内容: 如何使用查询语句更改表名? 我使用以下语法,但在SQL Server 2005中找不到重命名关键字。 问题答案: 使用sp_rename: 您可以在MSDN上找到有关此过程的文档。 如果需要包括模式名称,则只能将其包含在第一个参数中(也就是说,不能将其用于将表从一个模式移动到另一个模式)。因此,例如,这是有效的:

  • 问题内容: 我正在尝试在我的文档归档系统上为高级搜索页面编写查询。我正在尝试通过多个可选参数进行搜索。我有大约5个参数,它们可以是空字符串或搜索字符串。我知道我不必检查每个字符串或为空并为每个组合创建一个单独的存储过程。 编辑:最终使用: 问题答案: 您可以这样使用COALESCE(或ISNULL):