mysql按照漢字拼音進行order by排序
背景:
今天在專案開發的過程中,需要對查詢結果進行漢字的拼音升序進行排序顯示,當時第一反應就是直接在order by
後面加上排序欄位就可以。
eg: select * from pub_user_info u where u.sex='1' order by u.name asc;
emm,一切按照所預期的進行著。but,執行之後...查詢的結果並沒有按照我所預期的按照漢字對應拼音的升序進行排列。
原因:
查詢資料後發現,出現這個問題的原因是因為MySQL在查詢字串時是大小寫不敏感的,在編繹MySQL時一般以ISO-8859字符集作為預設的字符集,因此在比較過程中中文編碼字元大小寫轉換造成了這種現象。
解決方法:
- 1 修改資料庫表欄位:
對於包含中文的欄位加上binary
屬性,使之作為二進位制比較。eg: 將name char(10) 改成 name char(10)binary
- 2 修改查詢語句:
如果不想修改資料庫中表欄位屬性的話,也可以在查詢語句的order by
部分使用CONVERT
函式。eg: select * from pub_user_info u where u.sex='1' order by CONVERT(u.name USING GBK) asc;
ps:資料庫表結構一般在確定後就儘量不要去做改動,所以推薦使用第二種方法
相關文章
- js 漢字按照拼音排序效果JS排序
- JavaScript按照漢字拼音順序排序JavaScript排序
- Oacle中如果按照漢字來排序(order by), 是什麼規則 ?排序
- js 漢字陣列按拼音排序JS陣列排序
- 如何讓漢字以拼音字母順序排序排序
- 【ORDER】改變Oralce對簡體漢字的排序規則(拼音、部首、筆畫)(session級調整)排序Session
- 【ORDER BY】在ZHS16GBK字符集下Oracle漢字排序依據亦是二進位制編碼非拼音Oracle排序
- C#漢字轉漢語拼音C#
- JS 漢字轉換拼音JS
- 漢字轉拼音pl/sqlSQL
- java對中文(拼音)進行排序Java排序
- C#漢字拼音檢索C#
- C#中漢字轉拼音C#
- iOS漢字轉拼音的方法iOS
- 漢字之美,拼音之韻
- php獲取漢字的拼音 拼音首字母PHP
- Map按照key和value進行排序排序
- PHP 字串陣列按照拼音排序的問題PHP字串陣列排序
- js漢字轉換為拼音功能JS
- JavaPinyin4j(漢字轉拼音)JavaAPI
- php 漢字轉換成拼音 程式PHP
- xpinyin:漢字轉換為拼音庫
- thinkphp where in order 按照順序in的迴圈排序PHP排序
- 「Js」物件按照鍵名來進行排序JS物件排序
- MapReduce 按照Value值進行排序輸出排序
- ORDER對查詢結果進行排序排序
- Sql Server資料庫漢字按字母、筆劃、拼音首字母、排序SQLServer資料庫排序
- MySQL Order BY 排序過程MySql排序
- Python 漢字轉拼音的庫--- PyPinyinPython
- oracle 外部表 漢字轉換為拼音Oracle
- ThinkPHP 漢字轉成多種形式拼音PHP
- 【NLSSORT】改變Oralce 對簡體漢字的排序規則(拼音、部首、筆畫)排序
- 欄位按照指定 ID 順序進行排序排序
- python3實現漢字轉拼音Python
- C# 漢字轉拼音 使用微軟的Visual Studio International Pack 類庫提取漢字拼音首字母C#微軟
- mysql 字串型別的數值欄位按照數值的大小進行排序MySql字串型別排序
- mysql下,把中文翻譯成漢語拼音MySql
- JavaScript 漢字與拼音互轉終極方案 附JS拼音輸入法JavaScriptJS