mysql按照首字母對漢字進行排序

2022-07-01 08:12:11 字數 2208 閱讀 3540

對漢字內容的字段進行排序,用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

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, '

嘻嘻');

按照name欄位正序排列結果:

可以看到排序錯誤

下面有兩種方式可以進行按照首字母進行漢字排序:

1、將字段設定為gbk編碼

先檢視之前建立的字段編碼為

現在修改為gbk

再次進行排序

成功!2、字段編碼還是用utf8,但是查詢的時候通過sql將字段進行gbk編碼(推薦)

下面把字段編碼改回utf8

alter

table

`test`

modify

column `name` varchar(255) character

set utf8 collate utf8_general_ci null

default

null after `id`

然後通過下面的sql查詢

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個採用拼音排序,二級漢字就不是了,但考慮到人名等都是常用漢字,因此只是針對一級漢字能正確排序也夠用...