Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

请教多个关键词组合查询的问题?

basic66 2024-05-23 17:07:21

关键词1|关键词2|关键词3|关键词4|.......(很多)

要在“字段1”里面查询是否同时包含任意2个(或N个)关键词,请问要怎么写?

...全文
422 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 版主 06-18
  • 打赏
  • 举报
回复

把“关键词1|关键词2|关键词3|关键词4|”放到一张表中,

```
SELECT 字段1,COUNT(1) AS 数量 FROM T JOIN T1 ON 字段1 LIKE '%'+关键词+'%'GROUP BY 字段1

```sql
后边想查询数量是多少的加条件就可以了

  • 打赏
  • 举报
回复

select * from table where 字段1 like '%关键词1%关键词2%' or 字段1 like '%关键词2%关键词1%'

  • 打赏
  • 举报
回复

以下内容引用天工AI GPT3.0

在MS SQL Server中,如果你想在一个字段中查询是否同时包含任意两个(或多个)关键词,你可以使用LIKE子句结合OR运算符来实现。然而,这种方法在大规模关键词查询时效率较低,因为它需要执行多次独立的查询。

一个更高效的方法是使用CONTAINSFREETEXT谓词,它们是专门为全文搜索设计的。但是,这要求你的数据库已经启用了全文索引。

以下是一个示例,展示如何使用LIKE子句来查询一个字段是否同时包含任意两个关键词:

DECLARE @keywords TABLE (keyword NVARCHAR(100))
INSERT INTO @keywords (keyword) VALUES ('关键词1'), ('关键词2'), ('关键词3'), ('关键词4') -- 添加更多关键词...

SELECT field1
FROM your_table
WHERE EXISTS (
    SELECT 1
    FROM @keywords k1
    WHERE field1 LIKE '%' + k1.keyword + '%'
    INTERSECT
    SELECT 1
    FROM @keywords k2
    WHERE field1 LIKE '%' + k2.keyword + '%'
    AND k1.keyword <> k2.keyword
)

在这个查询中,我们首先创建了一个临时表@keywords来存储所有的关键词。然后,我们使用子查询来找出在field1中同时包含至少两个不同关键词的记录。INTERSECT操作符用于确保我们只选择那些同时满足两个不同关键词条件的记录。

如果你想要查询同时包含特定数量的关键词(例如3个、4个等),你可以调整子查询中的逻辑,使用适当的集合运算符(如UNION ALLEXCEPT)来组合关键词条件。

如果你的数据库启用了全文索引,你可以使用以下方法:

-- 假设你有一个名为your_table的表,其中有一个名为field1的全文索引列
SELECT field1
FROM your_table
WHERE CONTAINS(field1, '("关键词1" OR "关键词2" OR "关键词3" OR "关键词4")')

在这个查询中,CONTAINS函数用于搜索field1列中包含任意指定关键词的记录。你可以根据需要添加更多关键词到搜索条件中。

请注意,全文搜索要求关键词是完整的单词,而不是部分字符串。如果你需要搜索部分匹配,你可能需要使用LIKE子句或调整全文搜索配置。

34,692

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧