如何创建sql查询以搜索部分匹配?

前端之家收集整理的这篇文章主要介绍了如何创建sql查询以搜索部分匹配?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在db中有一组项目.每个项目都有一个名称和一个描述.我需要实现一个搜索工具,它接受一些关键字并返回至少有一个关键字与名称中的单词匹配的不同项目或描述.

例如
我在db中有三个项目

1.item1 : 
    name : magic marker
    description: a writing device which makes erasable marks    on whiteboard

2.item2:
    name: pall mall cigarettes
    description: cigarette named after a street in london

3.item3:
    name: XPigment Liner
    description: for writing and drawing

使用关键字“书写”的搜索应该返回魔术标记和XPigment Liner

使用关键字’mall’进行搜索应返回第二项

我尝试分别使用LIKE关键字和IN关键字,..
要使IN关键字起作用,查询必须是

SELECT DISTINCT FROM mytable WHERE name IN ('pall mall cigarettes')

SELECT DISTINCT FROM mytable WHERE name IN ('mall')

将返回0行

我无法弄清楚如何使查询适应名称和描述列,并允许部分单词匹配..

有人可以帮忙吗?

更新:

我通过hibernate创建了表,并且对于description字段,使用了javax.persistence @Lob annotation.Using psql,当我检查表时,它显示

...
 id           | bigint                      | not null
 description  | text                        |  
 name         | character varying(255)      | 
...

表中的一条记录是,

id | description | name 
21 | 133414      | magic marker

解决方法

首先,这种方法不会扩大规模,你需要从单词到项目的单独索引(如倒排索引).

如果您的数据不大,您可以这样做

SELECT DISTINCT(name) FROM mytable WHERE name LIKE '%mall%' OR description LIKE '%mall%'

如果您有多个关键字,请使用OR.

原文链接:https://www.f2er.com/mssql/76465.html

猜你在找的MsSQL相关文章