
前言在MySQL中我們經(jīng)常會對一個字段進(jìn)行排序查詢但進(jìn)行中文排序和查找的時候?qū)h字的排序和查找結(jié)果往往都是錯誤的。 這種情況在MySQL的很多版本中都存在。如果這個問題不解決那么MySQL將無法實際處理中文。 出現(xiàn)這個問題的原因是因為MySQL在查詢字符串時是大小寫不敏感的在編繹MySQL時一般以ISO-8859字符集作為默認(rèn)的字符集因此在比較過程中中文編碼字符大小寫轉(zhuǎn)換造成了這種現(xiàn)象。表結(jié)構(gòu)修改對于包含中文的字段加上binary屬性使之作為二進(jìn)制比較例如將name char(10)改成name char(10) binary。源碼編譯編譯MySQL時使用–with–charsetgbk參數(shù)這樣MySQL就會直接支持中文查找和排序了默認(rèn)的是latin1。也可以用extra-charsetsgb2312,gbk來加入多個字符集。查詢語句使用CONVERT函數(shù)UTF8默認(rèn)校對集是utf8_general_ci, 它不是按照中文來的。你需要強(qiáng)制讓MySQL按中文來排序。SELECT * FROM student ORDER BY CONVERT(name USING gbk);