首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 查詢漢字拼音首字母:建立拼音對照表實現中文排序與分組

     編輯:MySQL 資料庫相關知識

核心思路

MySQL 無內建拼音函數,解法:建立拼音區間對照表,利用字元編碼順序(GBK/Big5 中漢字按拼音排序)以 `BETWEEN` 篩選首字拼音。

步驟 1:建立拼音對照表

DROP TABLE IF EXISTS `pinyin`;
CREATE TABLE `pinyin` (
  `py` VARCHAR(1) NOT NULL,
  `hz1` VARCHAR(1) NOT NULL COMMENT '該拼音起始漢字',
  `hz2` VARCHAR(1) NOT NULL COMMENT '該拼音結束漢字',
  PRIMARY KEY (`py`)
) DEFAULT CHARSET=gbk;

INSERT INTO `pinyin` (`py`,`hz1`,`hz2`) VALUES
('A','吖','驁'), ('B','八','簿'), ('C','嚓','錯'), ('D','咑','鵽'),
('E','妸','樲'), ('F','發','鰒'), ('G','猤','腂'), ('H','妎','夻'),
('J','丌','攈'), ('K','咔','穒'), ('L','垃','鱳'), ('M','嘸','旀'),
('N','丆','桛'), ('O','噢','漚'), ('P','妑','曝'), ('Q','七','囕'),
('R','呥','鶸'), ('S','仨','蜶'), ('T','他','籜'), ('W','屲','鶩'),
('X','夕','鑂'), ('Y','丫','韻'), ('Z','帀','咗');

關鍵:資料庫/表/連線字元集必須為 gbk(或 big5),否則區間比對失效。

步驟 2:查詢資料表首字拼音

-- 列出所有文章標題及其首字拼音
SELECT p.py, a.*
FROM `article` a
JOIN `pinyin` p ON a.`title` BETWEEN p.hz1 AND p.hz2
ORDER BY p.py, a.`title`;

輸出範例

py  title
Z   招聘
Z   專題
W   網站介紹
W   問吧
S   搜索
L   聯系方式
L   論壇
H   會員
G   關於我們
B   版權聲明
B   百科

單字查詢

SELECT py FROM pinyin WHERE '漢字' BETWEEN hz1 AND hz2;  -- 回傳 'H'

遷移至 UTF-8 環境的替代方案

  • 應用層(PHP/Java/Python)用現成拼音庫轉換後存入欄位 `pinyin_initial`,查詢直接 `ORDER BY pinyin_initial`。
  • MySQL 8.0+ 可建立 GENERATED COLUMN 自動計算(需自訂函數)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved