如果 discountPrice 和 price 字段的类型为 String,并且包含数字和其他字符,那么在数据库查询中需要使用相应的转换函数或自定义排序规则来处理。以下是几种可能的处理方式:
-
使用数据库函数提取数字部分进行排序:
如果你使用的是 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函数将discountPrice和price字段中的非数字字符替换为空字符串,然后使用CAST函数将结果转换为DECIMAL类型进行排序。 -
在实体类中添加排序字段:
另一种方法是在实体类中添加专门用于排序的字段,并在保存实体时预处理这些字段的值。例如:@Entity public class Spu { // ... @Column(name = "discount_price_sort") private BigDecimal discountPriceSort; @Column(name = "price_sort"

最低0.47元/天 解锁文章
321

被折叠的 条评论
为什么被折叠?



