我有一个我的 sql View (MY_VIEW),其值已预先格式化
FORMAT(myValue,2,'DE_de') as Value
所以,我有一些值,例如:123,18 ... 10.020,98 等。
但是,当我使用 Sum(Value) 基于 MY_VIEW 执行另一个查询时,它返回错误的值,因为我认为它无法对格式化值执行 SUM 。
所以我需要将值重新转换为 float ,但使用 CAST 但它不起作用:
SUM( CAST(Value AS Decimal(10,2) ))
最佳答案
希望这对您有帮助。
1。调用 REPLACE() 2 次h2>
mysql> SELECT CAST(REPLACE(REPLACE('1.123,45', ",", ""), ".", "") AS DECIMAL(10, 2)) AS converted;
+-----------+
| converted |
+-----------+
| 112345.00 |
+-----------+
2。使用UDF(用户定义函数)
mysql> SELECT CAST(REPLACE(REPLACE('1.123,45', ",", ""), ".", "") AS DECIMAL(10, 2)) AS converted;
+-----------+
| converted |
+-----------+
| 112345.00 |
+-----------+
根据How to do a regular expression replace in MySQL? ,你可以PREG_REPLACE()
替换“,”或“.”在https://github.com/hholzgra/mysql-udf-regexp之后使用正则表达式立即转换为“”已安装到您的 MySQL 服务器中
关于mysql - 如何将 'pre-formatted' 值转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20214977/