對漢字內容的字段進行排序,用order by 字段 是不行的,因為mysql編碼一般是utf8的,而要相對漢字進行排序必須用gbk編碼。
先看下平常的order by
新建test表
create插入資料table
`test` (
`id`
int(11) not
null
auto_increment,
`name`
varchar(255) default
null,
primary
key(`id`)
) engine
=innodb auto_increment=
4default charset=utf8;
insert按照name欄位正序排列結果:into `test`.`test`(`id`, `name`) values (1, '你好'
);insert
into `test`.`test`(`id`, `name`) values (2, '哈哈'
);insert
into `test`.`test`(`id`, `name`) values (3, '財務'
);insert
into `test`.`test`(`id`, `name`) values (4, '思想'
);insert
into `test`.`test`(`id`, `name`) values (5, '大海'
);insert
into `test`.`test`(`id`, `name`) values (6, '
阿里巴巴');
insert
into `test`.`test`(`id`, `name`) values (7, '秘密'
);insert
into `test`.`test`(`id`, `name`) values (8, '');
insert
into `test`.`test`(`id`, `name`) values (9, '
嘻嘻');
可以看到排序錯誤
下面有兩種方式可以進行按照首字母進行漢字排序:
1、將字段設定為gbk編碼
先檢視之前建立的字段編碼為
現在修改為gbk
再次進行排序
成功!2、字段編碼還是用utf8,但是查詢的時候通過sql將字段進行gbk編碼(推薦)
下面把字段編碼改回utf8
alter然後通過下面的sql查詢table
`test`
modify
column `name` varchar(255) character
set utf8 collate utf8_general_ci null
default
null after `id`
select結果如下:*from test order
byconvert(name using '
gbk')
成功!
MySQL按照漢字拼音首字母排序
mysql資料庫中,若需要按照漢字的拼音排序,用的比較多是在人名的排序中,按照姓氏的拼音字母,從a到z排序 mysql對其排序分兩種情況 一 儲存姓名的字段採用 gbk字符集 gbk內碼編碼時,其本身就採用了拼音排序的方法,查詢語句 order by name asc 查詢結果按照姓氏的公升序排序 ...
MySQL按照漢字拼音首字母排序
按照漢字的拼音排序,用的比較多是在人名的排序中,按照姓氏的拼音字母,從a到z排序 如果儲存姓名的字段採用的是gbk字符集,那就好辦了,因為gbk內碼編碼時本身就採用了拼音排序的方法 常用一級漢字3755個採用拼音排序,二級漢字就不是了,但考慮到人名等都是常用漢字,因此只是針對一級漢字能正確排序也夠用...
MySQL按照漢字拼音首字母排序
按照漢字的拼音排序,用的比較多是在人名的排序中,按照姓氏的拼音字母,從a到z排序 如果儲存姓名的字段採用的是gbk字符集,那就好辦了,因為gbk內碼編碼時本身就採用了拼音排序的方法 常用一級漢字3755個採用拼音排序,二級漢字就不是了,但考慮到人名等都是常用漢字,因此只是針對一級漢字能正確排序也夠用...