数据库中对于汉字根据首字母完成排序

场景:
对于数据库中某个varChar类型字段进行排序
这个字段的值是任意的,可以是只有数字,数字+汉字,字母+汉字,汉字等等

方法实现:

select id, name
from table1
where sta = '1'
order by case when name + 0 >  0 then 0 else 1 end asc,
 	name+0 asc, convert(name USING GBK) asc;
        

第一个排序:

case when name + 0 >  0 then 0 else 1 end 

是将数字+汉字类型的name 转义成0 ,其他类型的name转义为1
对于全部的0没有进行内部排序,对于全部的1 没有进行内部排序

第二个排序:

name+0 

将数字+汉字类型的进行内排序,
– 例如 11号,1号,2号很好,23号楼等,会被转为数值 11,1,2,23 排序 1,2,11,23

第三个排序:

convert(name USING GBK)

对于所有的1 进行内部按照首字母排序

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在MyBatis Plus,如果要对查询结果进行中文首字母排序,可以借助拼音转换工具对中文字段进行转换,并以转换后的拼音字段进行排序。以下是一个示例: 1. 首先,确保项目引入了pinyin4j这个拼音转换工具的依赖。可以在pom.xml文件添加如下配置: ```xml <dependency> <groupId>com.belerweb</groupId> <artifactId>pinyin4j</artifactId> <version>2.5.1</version> </dependency> ``` 2. 在实体类添加一个拼音字段,用于存储中文字段的拼音值。可以使用`@TableField`注解将该字段映射到数据库。 ```java import com.baomidou.mybatisplus.annotation.TableField; public class User { private Long id; private String name; @TableField(exist = false) private String namePinyin; // 拼音字段 // 省略getter和setter方法 } ``` 3. 在MyBatis Plus的Mapper文件编写SQL语句,使用pinyin4j工具的`toPinyin`函数将中文字段转换为拼音,并以拼音字段进行排序。 ```xml <select id="selectOrderByPinyin" resultMap="BaseResultMap"> SELECT id, name, to_pinyin(name) as namePinyin FROM user ORDER BY namePinyin </select> ``` 4. 在Service层调用Mapper的相应方法即可实现按照中文首字母排序的查询。 ```java @Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { @Autowired private UserMapper userMapper; @Override public List<User> selectOrderByPinyin() { return userMapper.selectOrderByPinyin(); } } ``` 这样,通过使用拼音转换工具,就可以在MyBatis Plus实现中文首字母排序了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值