MYSQL–关键字匹配

MySql 码拜 4年前 (2016-02-21) 331次浏览
表结构如下:
id  keyword
1 中国广东省
2 广东省深圳市
3 广东省广州市
4 中国广西省
5 广西省南宁市
6 广西省桂林市
搜索广东,要求匹配广东开头的优先排在前面,包含广东的排在后面
返回结果如下:
2 广东省深圳市
3 广东省广州市
1 中国广东省
解决方案

100

试试这个:

create table tb(id int,  keyword varchar(50));
insert into tb
select 1 ,"中国广东省" union all
select 2 ,"广东省深圳市" union all
select 3 ,"广东省广州市" union all
select 4 ,"中国广西省" union all
select 5 ,"广西省南宁市" union all
select 6 ,"广西省桂林市";
select *
from tb
where keyword like "%广东%"
order by instr(keyword,"广东")
mysql> create table tb(id int,  keyword varchar(50));
Query OK, 0 rows affected (0.44 sec)
mysql> insert into tb
    -> select 1 ,"中国广东省" union all
    -> select 2 ,"广东省深圳市" union all
    -> select 3 ,"广东省广州市" union all
    -> select 4 ,"中国广西省" union all
    -> select 5 ,"广西省南宁市" union all
    -> select 6 ,"广西省桂林市";
Query OK, 6 rows affected (0.17 sec)
Records: 6  Duplicates: 0  Warnings: 0
mysql> select *
    -> from tb
    -> where keyword like "%广东%"
    -> order by instr(keyword,"广东");
+--+--+
| id   | keyword      |
+--+--+
|    2 | 广东省深圳市 |
|    3 | 广东省广州市 |
|    1 | 中国广东省   |
+--+--+
3 rows in set (0.03 sec)
mysql>

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明MYSQL–关键字匹配
喜欢 (0)
[1034331897@qq.com]
分享 (0)