转换问题 - 在MySql中varchar字段中的价格为十进制

时间:2015-01-05 10:09:12

标签: mysql sorting varchar

我有一个表格products,价格字段product_price位于VARCHAR。 我从不同的来源获得价格值,这些来源有不同的格式,如

52,20 
1,607,211
36,000
125.00

我不希望像

那样改变我的表格
ALTER TABLE products MODIFY COLUMN product_price DOUBLE;

问题是我想对记录进行排序但它不起作用

SELECT * FROM `products` ORDER BY CAST(product_price AS DECIMAL(10,2)) asc

如何对其进行排序,哪种类型适用于所有类型&价格格式?

1 个答案:

答案 0 :(得分:1)

您必须从价格字符串中删除所有逗号,然后您可以使用如下所示的查询,但如果您使用适当的数据类型来存储价格则更好,因此您不需要在查询中使用这些类型的黑客

SELECT * 
FROM `products` 
ORDER BY replace(product_price,',','') * 1

DEMO