jpa中数据查询中的高级用 jpa查询中间件 数据库存储的字符串先换成数字 然后排序

如果 discountPriceprice 字段的类型为 String,并且包含数字和其他字符,那么在数据库查询中需要使用相应的转换函数或自定义排序规则来处理。以下是几种可能的处理方式:

  1. 使用数据库函数提取数字部分进行排序:
    如果你使用的是 MySQL 数据库,可以使用 CAST 函数将字符串转换为数字类型,然后进行排序。例如:

    paging = PageRequest.of(page, count, Sort.by(
        Sort.Order.asc(Sort.Direction.ASC, "CAST(REGEXP_REPLACE(discountPrice, '[^0-9.]', '') AS DECIMAL)").nullsLast(),
        Sort.Order.asc(Sort.Direction.ASC, "CAST(REGEXP_REPLACE(price, '[^0-9.]', '') AS DECIMAL)").nullsLast()
    ));
    

    在这个例子中,使用 REGEXP_REPLACE 函数将 discountPriceprice 字段中的非数字字符替换为空字符串,然后使用 CAST 函数将结果转换为 DECIMAL 类型进行排序。

  2. 在实体类中添加排序字段:
    另一种方法是在实体类中添加专门用于排序的字段,并在保存实体时预处理这些字段的值。例如:

    @Entity
    public class Spu {
         
         
        // ...
        
        @Column(name = "discount_price_sort")
        private BigDecimal discountPriceSort;
        
        @Column(name = "price_sort"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值