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`
將中文轉拼音,然後在根據首字母排序
推薦中文轉拼音來處理 基於詞庫的中文轉拼音優質解決方案