MySQL提取的带千分位逗号的price字符串如何转为无逗号数值类型
MySQL端格式化price字段的解决方案
你可以通过字符串替换+类型转换的方式直接在查询阶段生成无千分位逗号的数值,修改查询语句如下即可:
基础写法(精度要求不高的场景)
直接替换逗号后利用MySQL隐式类型转换转为数值:
SELECT REPLACE(price, ',', '') + 0 AS price FROM xxTable;
高精度写法(推荐用于金额字段)
金额类数据避免浮点数精度丢失,建议转定点数类型:
SELECT CAST(REPLACE(price, ',', '') AS DECIMAL(18,2)) AS price FROM xxTable;
补充说明
REPLACE(price, ',', '')会把字符串中所有千分位逗号替换为空,得到类似50000.00的纯数字字符串CAST(xxx AS DECIMAL(18,2))会将字符串转为支持两位小数的定点数,完全匹配原价格的精度,也可以根据你的业务需求调整DECIMAL的长度和小数位数- 如果你还未完成JSON字段的提取,假设存储JSON的字段名为
json_data,价格对应的key为price,完整查询写法如下(MySQL 5.7及以上版本支持):
SELECT CAST(REPLACE(json_data->>'$.price', ',', '') AS DECIMAL(18,2)) AS price FROM xxTable;
内容的提问来源于stack exchange,提问作者user12738756
相关产品推荐
相关产品推荐

