Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL Server中搜索多个关键字,并根据匹配的最大值对结果进行排序_Sql_Sql Server - Fatal编程技术网

在SQL Server中搜索多个关键字,并根据匹配的最大值对结果进行排序

在SQL Server中搜索多个关键字,并根据匹配的最大值对结果进行排序,sql,sql-server,Sql,Sql Server,我想在tblSearch表的一列中搜索几个关键字 例如,关键字是sql、java、net。 列值如下所示 acce java网络访问 共享java网络访问sql python 没有技术 sql server与 这里我想得到的结果是2,1,4 尝试使用like语句,但我应该如何根据匹配的关键字的最大数量对它们进行排序。我没有全文搜索的选项。有没有最简单的方法可以做到这一点,而不必使用许多类似的语句。全文搜索具有基于匹配的自动排序功能 如果您已经适当地构建了全文索引,并且ID列上有唯一的聚集索引(在

我想在tblSearch表的一列中搜索几个关键字

例如,关键字是sql、java、net。 列值如下所示

  • acce java网络访问
  • 共享java网络访问sql python
  • 没有技术
  • sql server与
  • 这里我想得到的结果是2,1,4


    尝试使用like语句,但我应该如何根据匹配的关键字的最大数量对它们进行排序。我没有全文搜索的选项。有没有最简单的方法可以做到这一点,而不必使用许多类似的语句。

    全文搜索具有基于匹配的自动排序功能

    如果您已经适当地构建了全文索引,并且ID列上有唯一的聚集索引(在您的示例中,我假设它由值1、2、3和4标记),那么您所要做的就是运行下面的查询

    DECLARE @search varchar(100) = '"sql*" AND "java*" AND "net*"'
    
    SELECT t.*
    FROM tlbSearch t
        INNER JOIN CONTAINSTABLE (tblSearch, searchColumn, @search) Ktbl ON T.ID = Ktbl.[key]
    ORDER BY Ktbl.[rank] ASC
    
    为了利用全文搜索,您必须使用适合全文的过滤功能。与
    类似的
    =
    在全文中的等价物是
    自由文本
    包含
    ,以及它们的
    自由文本表
    ,它们会自动返回包含所需
    排名
    列的表格

    此外,为了让它工作,你所有的关键字都需要在同一列中——结果是有点冗余,但这正是全文搜索所需要的。因此,您的tblSearch需要具有以下结构:

    +----+----------------------------------+
    | ID |           searchColumn           |
    +----+----------------------------------+
    |  1 | acce java net take               |
    |  2 | share java net access sql python |
    |  3 | no tech                          |
    |  4 | sql server with                  |
    +----+----------------------------------+
    

    (如果您想像我一样在Stackoverflow上发布包含数据的表,)

    关键字是存储逗号分隔列表的单变量吗?或者每个关键字都是独立的变量现在是单个变量,并在一个表中拆分,但是如果需要的话,我也可以将它们分开,这不是问题。