在MySQL查询中获得最佳匹配

时间:2018-04-26 10:13:52

标签: 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%'

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

2 个答案:

答案 0 :(得分:2)

也许这就是你想要的

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

答案 1 :(得分:0)

SELECT * FROM my_table WHERE字段LIKE'$ str%'ORDER BY my_table