mysql表中文字段提取拼音首字母最便捷实现,中文按拼音首字母排序

如果你的需求仅仅是要对字段进行中文拼音排序可以把要排序的列的排序规则改一下如下

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值