mysql查詢結果排序,name欄位有中文名字,有英文名字,如何按a-z的順序把名字排序

來源:互聯網
上載者:User
關鍵字 php java mysql yii

1、name欄位用來儲存客戶姓名,查詢結果需要按姓氏拼音排序,現在有一個問題,
名字既有中文名字,又有英文名字,比如 張三,李四,Jaewon Park,老王
這樣查詢出來的結果英文名字的人永遠排第一
排序我使用的是下面這句
CONVERT( name USING gbk ) COLLATE gbk_chinese_ci

如何可以將英文的第一個字母也按照拼音的方式排序呢?

回複內容:

1、name欄位用來儲存客戶姓名,查詢結果需要按姓氏拼音排序,現在有一個問題,
名字既有中文名字,又有英文名字,比如 張三,李四,Jaewon Park,老王
這樣查詢出來的結果英文名字的人永遠排第一
排序我使用的是下面這句
CONVERT( name USING gbk ) COLLATE gbk_chinese_ci

如何可以將英文的第一個字母也按照拼音的方式排序呢?

謝邀。
單純用 mysql 解決,中英文混合還要按照 A-Z 排序,我並沒有辦法

我的一個小思路是,可以增加一列,把中文轉成拼音,然後按照字母排序

建立一列,用來儲存 如果是英文 就儲存首字母,如果是中文就儲存拼音首字母,專門用來排序
至少漢字拼音怎麼獲得,網上解決方案很多,自己搜一下吧

多加一列,儲存對應名字的拼音,這樣就很好排序了

`--建立擷取漢字首字母的函數
CREATE FUNCTION FirstPinyin(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8
BEGIN

DECLARE V_RETURN VARCHAR(255);SET V_RETURN = ELT(INTERVAL(CONV(HEX(left(CONVERT(P_NAME USING gbk),1)),16,10),     0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7,     0xBFA6,0xC0AC,0xC2E8,0xC4C3,0xC5B6,0xC5BE,0xC6DA,0xC8BB,    0xC8F6,0xCBFA,0xCDDA,0xCEF4,0xD1B9,0xD4D1),    'A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','W','X','Y','Z');    RETURN V_RETURN;

END
--編寫查詢語句
SELECT * FROM article ORDER BY IFNULL(FirstPinyin(title),substring(title, 1, 1)) ASC`

將中文轉拼音,然後在根據首字母排序

推薦中文轉拼音來處理 基於詞庫的中文轉拼音優質解決方案

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.