我想从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%'
是否有更好的方法为搜索字符串选择最佳匹配?
答案 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
答案 1 :(得分:0)
SELECT * FROM my_table WHERE字段LIKE'$ str%'ORDER BY my_table