文档章节

MySQL 关键字模糊匹配,并按照匹配度排序

皮皮猫32
 皮皮猫32
发布于 2018/10/21 15:49
字数 347
阅读 161
收藏 10

MySQL 关键字模糊匹配,并按照匹配度排序。

方式一、按照关键字搜索,然后根据关键字所占比例排序

SELECT
	drug_name,
	pinyin
FROM
	tbl_drug
WHERE
	pinyin LIKE '%AM%'
ORDER BY
	LENGTH(pinyin);

效果如下

方式二、将关键字开头记录排序在前

SELECT
	drug_name,
	pinyin
FROM
	tbl_drug
WHERE
	pinyin LIKE 'AM%'
UNION
	SELECT
		drug_name,
		pinyin
	FROM
		tbl_drug
	WHERE
		pinyin LIKE '%AM%';

效果如下

方式三、将关键字开头排序在前,再根据匹配度排序记录

SELECT
	drug_name,
	pinyin
FROM
	(SELECT
		drug_name,
		pinyin
	FROM
		tbl_drug
	WHERE
		pinyin LIKE 'AM%'
	ORDER BY
		LENGTH(pinyin)
	LIMIT 999999) t1
UNION
	SELECT
		drug_name,
		pinyin
	FROM
		(SELECT
			drug_name,
			pinyin
		FROM
			tbl_drug
		WHERE
			pinyin LIKE '%AM%'
		ORDER BY
			LENGTH(pinyin)
		LIMIT 999999) t2
LIMIT 0,20;

结果如下,这块中文“()”所占长度较大。在此有一个问题,子查询的排序无效,如果子查询中order by 不带limit,会被优化器干掉

以上方式为网上整理总结,下面这个方式为个人改进

方式四、先根据关键字所在字段index排序,然后再根据匹配度排序

SELECT
    drug_name,
    pinyin
FROM
    tbl_drug
WHERE
    pinyin LIKE '%AM%'
ORDER BY
    LENGTH(substring_index(pinyin,'AM',1)),
    LENGTH(pinyin)
LIMIT 0,20

效果如下

© 著作权归作者所有

共有 人打赏支持
皮皮猫32
粉丝 3
博文 41
码字总数 13247
作品 0
广州
后端工程师
私信 提问
MySQL对Like搜索结果按照匹配程度排序

MySQL对Like搜索结果按照匹配程度排序 钇钛网 - 郭宇翔的博客2018-01-091 阅读 匹配mysql排序like搜索 最近项目上遇到一个需求,在原来项目的管理后台上,有一个通过用户昵称进行模糊搜索的功...

钇钛网 - 郭宇翔的博客
2018/01/09
0
0
如何解决mysql本地登陆不能登录的问题

在MySQL数据库中,使用select user();查看当前登陆用户。mysql中host字段的%与localhost不是谁包括谁的问题,是由精确到模糊进行匹配的。 说明 当用户从客户端请求登陆时,MySQL将授权表中的...

问题终结者
2018/06/26
0
0
23 款实用的 Elasticsearch 查询示例

ElasticSearch是一个基于Lucene的搜索服务器,它是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。本文介绍了几种常用的Elasticsearch查询方式,并分别进...

达尔文
2016/11/16
7.1K
17
Elasticsearch 常用基本查询

安装启动很简单,参考官网步骤:https://www.elastic.co/downloads/elasticsearch   为了介绍Elasticsearch中的不同查询类型,我们将对带有下列字段的文档进行搜索:title(标题),autho...

小爪进击者
2018/12/25
0
0
六、MySQL查询数据

6.1、基本查询语句 MySQL从数据表中查询数据的基本语句为SELECT语句,其基本格式为: SELECT {* | } [ FROM ,... [WHERE 表达式 [GROUP BY ] [HAVING [{ }...]] [ORDER BY...

运维菜鸟丶
2017/08/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

eclipse中项目svn转gitLab全过程

在工作中,我们可能会遇到项目从svn迁移到gitLab;此过程我们需要变化版本管理工具,上传代码。本篇博客记录了使用spring tool suit(sts/eclipse)进行项目迁移的全过程。 步骤: (1)端口之...

em_aaron
25分钟前
0
0
scala学习(一)

学习Spark之前需要学习Scala。 参考学习的书籍:快学Scala

柠檬果过
38分钟前
1
0
通俗易懂解释网络工程中的技术,如STP,HSRP等

导读 在面试时,比如被问到HSRP的主备切换时间时多久,STP几个状态的停留时间,自己知道有这些东西,但在工作中不会经常用到,就老是记不住,觉得可能还是自己基础不够牢固,知识掌握不够全面...

问题终结者
昨天
4
0
看了一下Maven的内容

了解了Maven其实是一个跨IDE的标准构建工具,能推广的原因估计是借了仓库的便利。 另一个作用是可以通过Maven的功能在社区版的IDEA去创建Web项目,下次实践看看

max佩恩
昨天
4
0
day27:expect批量杀进程|

1、linux下当前目录有一个文件ip-pwd.ini,内容如下: [root@localhost_002 shell100]# cat ip-pwd.ini 10.111.11.1,root,xyxyxy10.111.11.2,root,xzxzxz10.111.11.3,root,12345610.......

芬野de博客
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部