在MySQL数据库中,价格的存储方式如下:
> 20.000
> 25.000
> 25.000
> 10.000
> 120
点代表千(意大利货币,如美国的逗号).
如果我尝试使用“按价格ASC排序”对这些数据进行排序,则我的订单如下:
> 10.000
> 20.000
> 25.000
> 120
似乎将点与逗号混淆.
实际上,120是最后一个,但它应该是第一个.有没有办法正确排序序列?
解决方法:
他期望得到以下结果:
120
10.000
20.000
25.000
25.000
现在,
select price from t
order by CAST(price AS DECIMAL(10,2));
和:
select price from t
Order by price+0 ASC
都将返回此:
10.000
20.000
25.000
25.000
120
他将需要以某种方式解析该字段:
select price from t
order by replace(price, '.', '')+0;
这给出了预期的结果.
你可以玩here
还要注意,如果您有小数点(用“,”分隔),则可能必须使用以下查询:
select price from t
order by replace(replace(price, '.', ''), ',', '.')+0;
现在,当然不打算将它们存储为文本了.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。