程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> mysql中文拼音排序實現方法

mysql中文拼音排序實現方法

編輯:關於MYSQL數據庫

由於MySQL對中文的支持不好,所以我們想要對中文進行按拼音排序也是一個不小不大的困難,今天我們利用convert函數來實現,不管什麼編碼都可以進行拼音進行排序哦,有需要的朋友參考一下。

對於包含中文的字段加上"binary"屬性,使之作為二進制比較,例如將"name char(10)"改成"name char(10)binary"。
如果你使用源碼編譯MySQL,可以編譯MySQL時使用 --with--charset=gbk 參數,這樣MySQL就會直接支持中文查找和排序了(默認的是latin1)。也可以用 extra-charsets=gb2312,gbk 來加入多個字符集。
如果不想對表結構進行修改或者重新編譯MySQL,也可以在查詢語句的 order by 部分使用 CONVERT 函數。

比如

select * from mytable order by CONVERT(chineseColumnName USING gbk);

UTF8 默認校對集是 utf8_general_ci , 它不是按照中文來的。你需要強制讓MySQL按中文來排序。

select * from core_vender_info order by convert(vender_abbrev USING gbk) COLLATE gbk_chinese_ci

實例

create table `test111cnnet` (
`bid` int(4) unsigned not null auto_increment,
`namerean` varchar(20) character set gbk default null,
primary key (`id`)
) ;

保存部份數據

insert into `test1` (`id`, `namerean`) values('李');
insert into `test1` (`id`, `namerean`) values('鄧');
insert into `test1` (`id`, `namerean`) values('站');

排序查詢

MySQL>select namerean fromtest111cnnetorder by namerean;

鄧(d)
李(l)
站(z)

這樣看上去MySQL中文排序是沒有任問題,因為我們的namerean是gbk編碼,所以結果是滿意的,那麼如果是uft-8就不行了,所以我們構造了一條

select namerean from test111cnnet order by convert(namerean using gb2312) asc;

這樣,不管當前字段為什麼編碼,他都能很好的按中文拼音進行排序

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved