以前還真沒(méi)有關(guān)注這個(gè)中文排序的問(wèn)題婴谱,這里記錄下蟹但。
一張學(xué)生表
select *from t_student;
學(xué)生表
我們根據(jù)s_name來(lái)排序
select *from t_student order by s_name;
根據(jù)s_name排序
這里的中文排序,是不對(duì)的谭羔,應(yīng)該是由于字符集的問(wèn)題华糖,一般情況下,數(shù)據(jù)庫(kù)中的編碼都是使用UTF-8的瘟裸,所以客叉,對(duì)于中文會(huì)有問(wèn)題。
從網(wǎng)上找到2中解決辦法
create table的時(shí)候加上binary屬性(經(jīng)測(cè)試话告,不好用)
注意下s_name字段兼搏,我們添加了binary屬性
CREATE TABLE `t_student_test` (
`s_id` int(11) DEFAULT NULL COMMENT '學(xué)生ID',
`s_name` varchar(20) binary DEFAULT NULL COMMENT '學(xué)生姓名',
`s_gender` int(11) DEFAULT NULL COMMENT '學(xué)生性別 0-男,1-女',
`s_birthday` date DEFAULT NULL COMMENT '出生日期',
`s_hobby` varchar(100) DEFAULT NULL COMMENT '愛(ài)好',
`c_id` int(11) DEFAULT NULL COMMENT '班級(jí)ID'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='學(xué)生表';
這里,我試驗(yàn)是失敗的沙郭,中文排序依然不對(duì)
在order by 后面佛呻,使用 convert函數(shù)
select *from t_student order by convert(s_name using gbk);
中文排序
使用convert函數(shù)是可以的,沒(méi)有問(wèn)題