關鍵函數:
left(x)返回字符串s的前n個字符;
HEX(x) 返回x的十六進制編碼;
CONV(x,f1,f2) 返回f1進制數變成f2進制數;
首先:
建一個拼音表 t_cosler ,存放每個字母開頭的第一個漢字的編號和最后一個漢字的編號。
create table t_cosler (
f_PY char primary key,
cBegin SMALLINT UNSIGNED not null,
cEnd SMALLINT UNSIGNED not null
);
insert into t_cosler values
('A',0xB0A1,0xB0C4),
('B',0xB0C5,0xB2C0),
('C',0xB2C1,0xB4ED),
('D',0xB4EE,0xB6E9),
('E',0xB6EA,0xB7A1),
('F',0xB7A2,0xB8C0),
('G',0xB8C1,0xB9FD),
('H',0xB9FE,0xBBF6),
('J',0xBBF7,0xBFA5),
('K',0xBFA6,0xC0AB),
('L',0xC0AC,0xC2E7),
('M',0xC2E8,0xC4C2),
('N',0xC4C3,0xC5B5),
('O',0xC5B6,0xC5BD),
('P',0xC5BE,0xC6D9),
('Q',0xC6DA,0xC8BA),
('R',0xC8BB,0xC8F5),
('S',0xC8F6,0xCBF9),
('T',0xCBFA,0xCDD9),
('W',0xCDDA,0xCEF3),
('X',0xCEF4,0xD188),
('Y',0xD1B9,0xD4D0),
('Z',0xD4D1,0xD7F9);
使用拼音表t_cosler 與 要查詢的目標表 關聯查詢 ,查詢拼音為“S”的漢字;
select p.* from 目標表 p , t_cosler c where CONV(HEX(left(目標表中要檢索的字段,1)),16,10) between c.cBegin and c.cEnd and c.f_PY='要檢索的字母';
