使用AND逻辑和通配符在多列上进行SQL全文搜索

问题描述

我有3个可搜索的列。当用户输入多个单词时,我必须搜索包含所有单词(AND)的一行,并且可以在3列中的任意一列中进行匹配。所有单词都应使用通配符(word *)搜索。如何在sql全文搜索中做到这一点。

我尝试了使用AND运算符的contains函数。看起来它只搜索一列。

在“项目”表中,我有2列“详细信息”和“受让人”。

enter image description here

用户搜索“ doxy vive”时,我需要在两个带有前缀和AND的列中进行搜索。 这是我尝试过但没有奏效的方法。它适用于OR条件。

[
  {
    'profile': 
      '{"101":{"updatedBy":"user1","updatedOn":"2020-04-02","justification":"Tier 1 user"}}'
  },{
    'profile': 
      '{"102":{"updatedBy":"user2","updatedOn":"2019-06-08",{
    'profile': 
      '{"103":{"updatedBy":"user1","updatedOn":"2018-05-02",{
    'profile': 
      '{"104":{"updatedBy":"user2","updatedOn":"2020-06-12",{
    'profile': 
      '{"105":{"updatedBy":"user1","updatedOn":"2019-06-18","justification":"Tier 1 user"}}'
  }
]

这说明了如何在多个列上进行搜索,但是我需要在多个列上进行AND操作。 https://docs.microsoft.com/en-us/sql/t-sql/queries/contains-transact-sql?view=sql-server-ver15#querying-multiple-columns-full-text-search

解决方法

我遇到了同样的问题,我不知道它是否是最好的解决方案,但是我这样解决了它:

select Details from [Items] where CONTAINS(*,'"vive*"') AND CONTAINS(*,'"doxy*"')