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

效果如下

延伸版:

SELECT

drug_name,

pinyin

FROM

tbl_drug

WHERE

LOCATE( "阿", pinyin ) > 0

OR LOCATE( "阿", drug_name ) > 0

ORDER BY

LOCATE( "阿", pinyin ),

LOCATE( "阿", drug_name ),

LENGTH( pinyin );

结果如下:

mysql模糊匹配关键字_MySQL 关键字模糊匹配,并按照匹配度排序相关推荐

  1. mysql查询结果升序_MySQL ORDER BY:对查询结果进行排序

    在MySQL SELECT 语句中,ORDER BY 子句主要用来将结果集中的数据按照一定的顺序进行排序. 其语法格式为: ORDER BY { | | } [ASC|DESC] 语法说明如下. 1) ...

  2. mysql中version是关键字_mysql关键字

    在今儿hibernate执行save方法的时候显示sql语法错误 Sql代码 You have an error in your SQL syntax; check the manual that c ...

  3. 判断mysql的关键字_MySQL关键字以及保留字

    开发过程中可打开此页面,使用CTRL+F进行搜索,如有字段名与MySQL关键字或保留字相同,应尽量避免使用. 也可以用以下python程序判断单词是否为MySQL关键字或者保留字. import sy ...

  4. mysql数据库的关键字_Mysql关键字和保留字(注意)

    SQLGrammarException: 头部错误信息: 2019-09-24 14:51:11.842 INFO 6728 --- [nio-9002-exec-2] o.s.web.servlet ...

  5. mysql中distinct关键字_MySQL关键字Distinct的详细介绍

    MySQL关键字Distinct用法介绍 DDL Prepare SQL: create table test(id bigint not null primary key auto_incremen ...

  6. mysql怎么模糊查询名字_mysql中模糊查询的四种用法:

    一.%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百 分号(%%)表示. *注:like '%龙%':查询出所有含有"龙"的记录 1. 所查 ...

  7. MySQL 关键字模糊匹配按照匹配度排序

    MySQL 关键字模糊匹配,并按照匹配度排序. 方式一.按照关键字搜索,然后根据关键字所占比例排序 SELECTdrug_name,pinyin FROMtbl_drug WHEREpinyin LI ...

  8. MySQL模糊查询 结果按匹配度 排序

    我们在使用 MySQL 进行模糊查询的时候,受到默认排序的影响,我们会发现与查询关键字相似的记录有时候并没有排到最前面. 如 : CREATE TABLE user(id BIGINT(11) AUT ...

  9. mysql中的merge into,SQL Server 2008中利用merge into关键实现insert/update自动匹配(类似于MySQL中的For Update关键字)...

    SQL Server 2008中利用merge into关键实现insert/update自动匹配(类似于MySQL中的For Update关键字) 语法请参考: 按照语法编写语句 DECLARE @ ...

  10. mysql模糊查询指定根据第几个字符来匹配

    mysql模糊查询指定根据第几个字符来匹配 下图案例1中,查询某员工名中第三个字符位e,第五个字符为a的员工名和工资 select last_name,salary  FROM employess W ...

最新文章

  1. swift 中跳转web view的两种方法
  2. 生物信息通识技术研讨会
  3. UA OPTI512R 傅立叶光学导论17 离散傅立叶变换简介
  4. 【HeadFirst 设计模式学习笔记】13 MVC分析
  5. mysql etc my.cnf_mysql配置文件 /etc/my.cnf 详细解释
  6. Linux第二次作业
  7. 11.4 优化拆分和合并(region)
  8. 程序设计竞赛(ACM)与认证(CCF)的概念集(百度百科)
  9. 浏览器接收响应消息并显示内容
  10. 栈、堆、静态存储区的三分天下
  11. 使用python实现日志功能
  12. java6和java7的区别_Java String的intern方法 在JDK6和JDK7的不同行为
  13. Layui treeTable相关
  14. 共享服务器协议,3.5.7 文件共享服务及SMB协议
  15. 海康人脸服务器型号,DS-2CD7A27FWD/F-LZ(S) 海康人脸识别摄像机 海康200万像素深眸智能人脸日夜筒型网络摄像机...
  16. 【windows屏幕扩展】把你多余屏幕利用起来,spacedesk屏幕扩展超低延迟解决方案
  17. html+css设置背景图移动以及人物行走的动画效果
  18. 车载系统大战:左边是BAT,右边是华为小米们
  19. Praat脚本-025 | 轻松合并不同目录里的TextGrids
  20. OGRE 火炬之光(torchlight) 骨骼动画 .

热门文章

  1. 实用干货秘籍!最经典的10个Pandas数据查询案例,收藏!
  2. db9针232接口波特率标准_9针RS232-422-485接口定义
  3. Skype国际版下载方法
  4. native2ascii命令详解
  5. java velocity 语法_Velocity语法
  6. 三星5G先锋计划:0元起抢先换5G不是梦
  7. tasklist 结束进程_netstat -ano,ntsd;tasklist,tskill-查看杀死进程命令 | 学步园
  8. Druid-1.1.12.jar下载 (链接下载+使用)
  9. 第1章-确定superboot210如何为smart210的nand flash进行的分区划分
  10. NT、Novell、Unix服务器的互连