首页 > 解决方案 > 在 MySQL 查询中获得最佳匹配

问题描述

我想从 MySQL 查询中获取结果,按最佳匹配排序。这意味着当我这样的表时:

+--------+
| Field  |
+--------+
| X01234 |
| 001234 |
| 01234  |
| XT1234 |
+--------+

并且想要搜索$str='012',所需的输出应该是

01234
001234
X01234

为此,我发现的唯一方法是使用此 UNION 查询:

SELECT * FROM my_table WHERE field LIKE '$str%'
UNION
SELECT * FROM my_table WHERE field LIKE '%$str%'

有没有更好的方法为搜索的字符串选择最佳匹配?

标签: mysql

解决方案


也许这就是你想要的

SELECT *
FROM my_table
WHERE field LIKE '%$str%'
ORDER BY INSTR(field,'$str'),field

你也可以INSTR改用LIKE

SELECT *
FROM my_table
WHERE INSTR(field,'$str')>0
ORDER BY INSTR(field,'$str'),field

SQL 小提琴 - http://www.sqlfiddle.com/#!9/d3b410/1


推荐阅读