转换问题 - varchar 字段中的价格转换为 MySql 中的小数

Conversion Issue - Price in varchar fields to Decimal in MySql

我有一个 table products,价格字段是 product_price,它在 VARCHAR 中。 我从不同的来源获取价格价值,这些来源的格式不同,例如

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

我不想像

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

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

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

如何对其进行排序以适用于所有类型和格式的价格?

您必须从价格字符串中删除所有逗号,然后您可以使用如下查询,但如果您使用正确的数据类型来存储价格会更好,这样您就不需要在查询中使用这些类型的 hack

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

DEMO