我有一个表格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
如何对其进行排序,哪种类型适用于所有类型&价格格式?
答案 0 :(得分:1)
您必须从价格字符串中删除所有逗号,然后您可以使用如下所示的查询,但如果您使用适当的数据类型来存储价格则更好,因此您不需要在查询中使用这些类型的黑客
SELECT *
FROM `products`
ORDER BY replace(product_price,',','') * 1