解决方案:
建一个拼音表word_encoding ,存放 A - Z 每个字母(first_spell)、以这个字母开头的第一个汉字的编号(cBegin)和最后一个汉字的编号(cEnd)。如下图所示:
然后,直接使用SQL语句查询与所需查询的表连接即可,代码如下:
SELECT tab.* FROM tab, word_encoding we WHERE we.First_Spell = '"+ word + "' AND CONV(HEX(CONVERT(LEFT(tab.Name, 1) USING gbk)), 16, 10) BETWEEN we.cBegin AND we.cEnd
其中,tab为所需查询的表,tab.Name为所需查询的表中姓名字段。
通过CONV(HEX(CONVERT(LEFT(tab.Name, 1) USING gbk)), 16, 10),取出姓名的第一个字,并进行编码和进制的转换。