mysql varchar类型 按自定英文顺序排序

mysql对varchar字段排序时,如何b开头的英文词放到a开头的英文之前!

2013-11-08 16:20:37

表company,内有字段company_name字段,varchar类型
数据如下:

f1
g1
a1
b1
c1
d1
e1


如果 select * from company order by company_name asc 的话
输出结果如下:

a1
b1
c1
d1
e1
f1
g1

但如果,想把b1放到a1之前,sql应该如何实现呢?
select * from company order by FIELD(MID(company_name,1,1),'b','a','b','c','d','e','f','g'),MID(company_name,2,1)


MID函数跟SUBSTRING是一样的
用法如下:SUBSTRING(str,pos,len)

FIELD函数用法如下
FIELD(str,str1,str2,str3,...)

对比str在str1,str2,str3,...中的位置

FIELD(MID(company_name,1,1),'b','a','b','c','d','e','f','g')
相当于对比company_name首字母在列表'b','a','b','c','d','e','f','g'中的位置,b的话就是1,a的话就是2,这样b开头的公司名就跑到头一个去了,除首字母外的其它英文数字还按默认的顺序来排

徜徉于这片废土的我们.....应当去哪里追寻更好的自己?