我有一个包含单词的表和一个输入字段,可使用实时搜索来搜索该表。当前,我使用以下查询来搜索表:
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY word ASC
有没有一种方法可以对结果进行排序,以使在单词开头找到字符串的字符串排在最前面,而在单词后面出现字符串的字符串排在最后呢?
例如:搜索“ hab ”当前返回
但我想这样:
或者至少这样:
如果有人可以帮我解决这个问题,那就太好了!
若要以第一方式进行操作(从单词的开头,单词的中间到单词的结尾),请尝试以下操作:
SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY
CASE
WHEN word LIKE 'searchstring%' THEN 1
WHEN word LIKE '%searchstring' THEN 3
ELSE 2
END
若要第二种方式(匹配字符串的位置),请使用以下LOCATE
函数:
SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY LOCATE('searchstring', word)
您还可能需要决胜局,例如,多个单词以开头hab
。为此,我建议:
SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY <whatever>, word
在以开头的多个单词的情况下,以开头hab
的单词hab
将被分组在一起并按字母顺序排序。
问题内容: 请帮助我创建一个包含10个’where’子句的select查询,其顺序应为:查询结果应按大多数关键字(where条件)匹配到最不匹配的顺序显示。 注意:所有10个条件都带有“或”。 请帮助我创建此查询。我正在使用MS-SQL Server 2005 喜欢: 在上面的查询中,所有与最大条件匹配的记录都应位于顶部,而较少匹配条件的记录应位于底部。 问题答案:
我的目标是筛选出最佳匹配。在我的例子中,我有一个人员列表,我想按姓氏和名字过滤。 匹配的预趋势将是: < li >姓和名都匹配,返回第一个匹配项 < li >仅姓氏匹配,返回第一个匹配项 < li >不匹配,抛出一些异常 我目前为止的代码:
问题内容: 我试图模糊匹配两个csv文件,每个文件包含一列名称,它们相似但不相同。 到目前为止,我的代码如下: 输出如下: 该脚本工作正常。输出是预期的。但是我所寻找的只是最佳的匹配。 因此,我需要基于第2列中的最大值,以某种方式删除第1列中的重复名称。这应该相当简单,但是我似乎无法弄清楚。任何帮助,将不胜感激。 问题答案: Fuzzywuzzy会以反向排序的顺序返回列表,最佳匹配排在最前面。 因
问题内容: 已关闭 。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗? 更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我想知道对于一般网站而言,MySQL中是否存在“最佳”排序规则选择,您不确定100%确定要输入什么内容吗?我知道所有编码都应该相同,例如MySQL,Apache,HTML和PHP中的任何内容。 过去,我已将PHP设置为在“ UTF-8”中输出,但是
问题内容: 现在我用下面的查询按每篇文章的auto_increment id进行即时排序 我想知道如何按我创建的日期字段排序,该字段通过strtotime()存储当前日期,它应该查询从最新到最旧的日期。 当前代码 问题答案: 只需更改ORDER BY中的列即可:
问题内容: 目前,我正在执行搜索功能。可以说在我的数据库中,我有以下数据: 关键字1 关键字2 关键字3 关键的东西 钥匙 然后用户输入:“ Key”作为要搜索的关键字。这是我当前的查询: 基本上,我有2个问题: 如何按相似性排序(排序)。从上面的示例中,我希望“ Key”作为我的第一个结果。我当前的结果是:Keyword1,Keyword2,Keyword3,Keysomething和Key 我