我的 MySQL 表之一中有一个prize_value 列,现在我需要基于此进行排序。该列实际上是 VARCHAR 并且附加了货币符号。但并非适用于所有值。货币符号可以是 USD(美元符号)、POUND 或 INR(卢比符号)。所以目前 order by 无法正常工作。如何在不手动删除货币符号的情况下解决此问题?
以下是该列中的一些示例值:
.50
£10
£100
$15
$20
£25
£50
10
₹30
最佳答案
您需要两列:
- 一个代表值,一个可以排序的 float / double (或整数),用于求和等运算。
- 一个用于其他目的(显示、可能转换等)的货币( ISO 4217 standard 之后的 char(3) )
在 varchar 中同时存储值和符号是没有意义的,特别是因为货币符号的位置因国家/地区而异(可以在开头或结尾),符号和符号之间可能有空格值与否等
话虽这么说,如果你不想改变你的 table ,类似的东西可以工作:
ORDER BY CAST(
REPLACE(REPLACE(REPLACE(thecolumn,'$',''),'£',''),'₹','')
AS DECIMAL(10,2)
)
关于mysql - ORDER BY 货币值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32244889/