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

通过在字符串中出现一组关键字来对sql结果进行排序

井斌斌
2023-03-14
问题内容

对于每一行,我想将每个描述的相关性与未定义数量的关键字进行比较。我知道“ THEN
+1”不起作用,但是我想得出这个结果(…为每个存在的关键字增加一个数字(每行从0开始)

SELECT *,
    (CASE description LIKE '%keyword1%' THEN +1 
          description LIKE '%keyword2%' THEN +1
          (...) 
          ELSE 0
    END) as relevance_description
FROM (...)
ORDER BY relevance_description DESC

因此,如果描述包含“ keyword1”和“ keyword2”,则此行的relevance_description应该为2。


问题答案:

您可以使用单独的子句执行此操作,然后将它们添加在一起:

SELECT *,
       ((CASE description LIKE '%keyword1%' THEN 1 else 0 end) +
        (case description LIKE '%keyword2%' THEN 1 else 0 end) +
        . . .
       ) as relevance_description
FROM (...)
ORDER BY relevance_description DESC;

在某些数据库中,布尔值被视为整数,因此您可以这样写:

SELECT *,
       ((description LIKE '%keyword1%') +
        (description LIKE '%keyword2%') +
        . . .
       ) as relevance_description
FROM (...)
ORDER BY relevance_description DESC;


 类似资料:
  • 问题内容: 允许用户使用字符串数组进行演奏。他们可以将字符串添加到数组中,从数组中删除字符串,在数组中搜索字符串,最终他们将能够对数组进行排序。排序使我很困惑。我尝试了几种不同的方法。第一种方法是将数组转换为ArrayList并使用Collections对ArrayList进行排序,然后将其转换回静态类数组。没用 我尝试的第二种方法是遍历数组,并尝试仅对用户添加的字符串进行排序,而不是对数组中的所

  • 我主要是一个VB.NET程序员,对VTL(Velocity Template Language)非常陌生。我目前正试图定制一个应用程序,使用Velocity模板和Jython。 我在一个现有文件中有以下VTL代码。以下代码从一个JSON文件中获得一些键值对,并将它们以一个简洁的表形式输出到浏览器: 我可以显示$keyset数组: 我试图做的是按字母顺序对$keyset数组中的字符串进行排序。 我尝

  • 我们使用Cassandra的用例是显示一篇博客文章的前10名最近访问者。以下是Cassandra表定义 现在,为了显示给定博客帖子的前10名最近访问者,需要在时间戳desc上有一个明确的“order by”子句。因为visted_ts不是Cassandra中集群列的一部分,所以我们无法完成这项工作。visited_ts不是集群列的一部分的原因是为了避免记录重复(读为重复)访问者。主键的设计方式是为

  • 问题内容: 我正在尝试对字符串列( 包含数字 )进行排序。 您会看到Mysql的自然排序算法放在后面( 对于大多数应用程序来说都可以 ),但是我有独特的需求,因此我希望结果应该像这样排序。 仅使用SQL 是否可能,或者我必须在应用程序级别操纵结果集? 问题答案: 继续 假设 它始终为WORD_space_NUMBER,这应该可行: 使用POSITION查找空间,使用SUBSTRING捕获其后的数字

  • 问题内容: 我有一个包含多个数组的数组,我想根据这些数组中的某个字符串对数组进行排序。 如何按名称排序,以便 阿尔伯特排 在首位, 齐默尔曼排 在最后? 我知道如果可以使用整数进行排序,但是字符串使我毫无头绪,该怎么办。 谢谢您帮忙!:) 问题答案: 这可以通过将支持函数作为参数传递给方法调用来实现。 像这样:

  • 本文向大家介绍Swift对字符串数组进行排序,包括了Swift对字符串数组进行排序的使用技巧和注意事项,需要的朋友参考一下 例子 3.0 最简单的方法是使用sorted(): 或者 sort() 您可以将闭包作为排序参数: 尾随闭包的替代语法: 但是,如果数组中的元素不一致,则会出现意外结果: 要解决此问题,请对元素的小写版本进行排序: 或者import Foundation使用NSString的