如果你的需求仅仅是要对字段进行中文拼音排序可以把要排序的列的排序规则改一下如下
ALTER TABLE `你的表`
CHANGE COLUMN `列名称` `列名称` VARCHAR(50) COLLATE 'gbk_chinese_ci'
这样再排序的时候就是默认按照中文拼音排序了
mysql表中文字段提取拼音首字母
SELECT a.提取字段,
IFNULL(ELT(INTERVAL (CONV(HEX(left(CONVERT(a.提取字段 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'),
'OTHER') as firstLetter
FROM 你的表 a
mysql表中文字段按拼音首字母排序
ORDER BY CONVERT(你的排序字段 USING gbk) ASC
java实现中文转拼音
引入依赖
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.0</version>
</dependency>
获取汉语首字母大写拼音例子
public static String convert(String str) {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
// 设置字母类型属性
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 拼音小写
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 拼音不标声调
format.setVCharType(HanyuPinyinVCharType.WITH_V);// u:的声母替换为v
String firstLetter = "";
try {
String[] array = PinyinHelper.toHanyuPinyinStringArray(str.charAt(0), format); // 第一个字符转换为拼音
if (array == null || array.length == 0) { // 判断字符串是否为空
return ""; // 停止执行
}
String s = array[0];// 不管多音字,只取第一个
char c = s.charAt(0);// 第一个字母
firstLetter = String.valueOf(c).toUpperCase();// 转换大写
} catch (BadHanyuPinyinOutputFormatCombination e) {}
return firstLetter;
}
输入: 呵呵
输出:H