Mybatis、Mysql将字符串字段转为数字排序、比较大小

本文探讨了在数据库查询中,如何正确地对包含数字的字符串进行排序。通过将字符串转换为数字,可以避免按照字符编码顺序排序的问题,确保排序结果符合业务逻辑。介绍了三种转换方法:使用加0操作、CAST函数和CONVERT函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正常字符串的排序,即使是纯数字,也是按照编码格式顺序排

例:

1,2,3,4,5,10,11,12

排序:

1,10,11,12,2,3,4,5

这在实际应用中不一定符合业务需求,需要把字符串转成数字再排序。

如把楼栋号'1'转成数字1

方法一:ORDER BY  build_no+0;

方法二:ORDER BY CAST(build_no AS SIGNED);

方法三:ORDER BY CONVERT(build_no, SIGNED);

 

同时也可以将字符串转为数字进行比较

例:

SELECT '123'+0; //结果为123

SELECT '123'+0>128; //结果为0

SELECT '123'+0>11; //结果为1

### MyBatis Plus字符串集合字段映射 在MyBatis Plus中处理字符串集合类型的字段可以通过自定义`TypeHandler`来实现。对于JSON格式的数据存储,推荐使用Jackson或Fastjson库来进序列化和反序列化。 #### 使用 `@TableField` 注解指定 TypeHandler 通过设置实体类中的字段并为其提供特定的处理器,可以轻松完成这一目标: ```java import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; // 导入相应的 JSON 处理器包 import com.alibaba.fastjson.TypeReference; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.core.type.TypeReference as JacksonTypeRef; import org.apache.ibatis.type.JdbcType; import com.baomidou.mybatisplus.extension.handlers.AbstractJsonTypeHandler; @TableName(value = "tb_user", autoResultMap = true) public class User { /** * 存储标签列表,采用 JSON 形式保存到数据库中 */ @TableField(typeHandler = JacksonTypeHandler.class) private List<String> tags; } ``` 这里选择了`JacksonTypeHandler`用于处理JSON转换[^3]。如果偏好阿里巴巴开发的Fastjson,则可以选择替换为`FastjsonTypeHandler`: ```java @TableField(typeHandler = FastjsonTypeHandler.class) private List<String> tags; ``` 为了确保数据能够被正确解析,在实际应用时还需要注意以下几点: - 数据表对应的列应能容纳较大长度的内容; - 如果使用的MySQL版本较老(如5.x系列),可能需要手动创建该列为TEXT类型以支持较长符集; - 对于其他关系型数据库,请参照其文档选择合适的字段类型。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值