SQL模糊查询排序问题
来源:互联网 发布:武汉大学网络教学平台 编辑:程序博客网 时间:2024/05/22 16:27
需求描述
- 查询表中名字带指定关键字的数据
- 完全匹配放在第一位
- 前匹配放在第二位
- 末尾匹配放在第三位
- 中间匹配放在第四位
建表
DROP TABLE IF EXISTS `t_user`;CREATE TABLE `t_user` ( `id` varchar(20) NOT NULL, `name` varchar(20) DEFAULT NULL, `password` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
初始数据
insert into t_user values(1,'汪峰','888888');insert into t_user values(2,'王汪峰','888888');insert into t_user values(3,'汪峰峰','888888');insert into t_user values(4,'欧阳汪峰','888888');insert into t_user values(5,'王汪峰峰','888888');
直接like查询
select * from t_user where name like '%汪峰%';
结果为:
可以发现,“汪峰峰”并没有排列在“王汪峰”前面
使用case when进行辅助排序
select * from t_user f where f.name like '%汪峰%' order by (casewhen f.name = '汪峰' then 1 when f.name like '汪峰%' then 2when f.name like '%汪峰' then 3when f.name like '%汪峰%' then 4 else 0end ) limit 0,50;
查询结果为:
等于说额外添加了一个虚拟列,来辅助进行排序;
首先匹配完全==的,然后再按照规则匹配下一条数据,就能得到我们想要的结果了。
阅读全文
1 0
- SQL模糊查询排序问题
- SQL 二 (有关排序、模糊查询)
- Sql Server 模糊查询的性能问题
- SQL in 模糊查询的问题
- 关于sql的模糊查询的问题
- 关于sql模糊查询的下划线问题
- sql,模糊查询,站内搜索,指定查询结果排序
- 【VB】SQL模糊查询和组合查询(机房问题)
- 模糊查询和排序
- SQL 面试题 二 (有关排序、模糊查询)
- SQL模糊查询
- SQL模糊查询
- 有关SQL模糊查询
- 有关SQL模糊查询
- sql 模糊查询
- SQL模糊查询
- SQL字符串模糊查询
- 模糊查询SQL语句
- Struts2:登录验证码(随机字符串)的实现
- cookie&session
- 内联函数总结
- RecyclerView
- ArrayList源码学习
- SQL模糊查询排序问题
- 关于人工智能的一些介绍与看法
- keepalived+nginx的配置
- MySQL优化系列(七)--视图应用详解
- Vuforia的学习(五)ImageTarget的使用
- 51NOD 1316 回文矩阵 【枚举】
- uva 401
- 1999: [Noip2007]Core树网的核
- Android HTTP下载XML文件并解析