按第一个字母排序的sql查询
问题描述:
我试图根据第一个字母排序我的mysql查询,但是我使用的每种方法都限制了我的搜索。按第一个字母排序的sql查询
例 MySQL表 价值 计算机服务 ABC计算机服务 动态计算机服务
如果我搜索computer services
我想要的结果,以返回:
**Name**
computer services
abc computer services
dynamic computer services
我使用MySQL的全文搜索的文本,但如果我使用name LIKE 'c%'
我没有其他两个结果,例如
SELECT name FROM table WHERE match('name') against('computer services*' IN BOOLEAN MODE) AND name LIKE 'c%';
这只会返回
- 计算机服务
但我想它返回:
- 计算机服务
- ABC计算机服务
- 动态计算机服务
我是mysql新增的全搜索文本。
答
首先使用与“开始”情况相匹配的order by子句。我在这里使用not like
,因为布尔值返回0或1,我们想要反转它以匹配首先匹配case。
SELECT name
FROM table
WHERE match('name') against('computer services*' IN BOOLEAN MODE)
ORDER BY name NOT LIKE 'computer services%', name;
我对全文搜索不太了解(这就是为什么我发布的评论,而不是答案),但我会猜测尝试摆脱`name LIKE'c%'`和走着瞧吧。这个表达式只会匹配以`c`开头的东西,后面跟着任何东西。 `abc computer services`不以'c`开头,所以我认为这就是为什么它没有被选中。 – FrustratedWithFormsDesigner 2011-02-08 16:32:55
感谢所有发布的人。分钟内惊人的响应! – 2011-02-08 16:45:50