在MySQL表中,我有一个带有不同值的VARCHAR列,它们可以表示String-,Integer-,Float-,Whatever-Values。这些值以特定于语言的字符串形式写入数据库,这意味着123.45的浮点值可以以类似"123,45"的字符串形式用德语编写(使用VB.Net ...)

由于我需要的浮动值的平均值在同一组中:
如何在MySQL中将这样的字符串转换为FLOAT
只是AVG(CONVERT(value, DECIMAL))不起作用(返回99.00000),无法转换为FLOAT

字符集是utf8,排序规则是utf8_general_ci

样表:

id | value  | group
1  | 122,45 | 1
2  |  66,34 | 1
3  | blabla | 2
4  | 109,21 | 1
5  | bababa | 2


目标:诸如SELECT AVG(CONVERT(value, DECIMAL)) FROM table WHERE (group=1)之类的东西应该产生99.333333,而不是99

有任何想法吗?

克里斯多夫

PS .:我没有进行数据库布局...

最佳答案

你可以试试

SELECT AVG(CONVERT(
    REPLACE(REPLACE(value, '.', ''), ',', '.'),
    DECIMAL(10,2)))
FROM `table`
WHERE `group`=1

关于mysql - MySQL:将字符串转换为德语的浮点数/小数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42174453/

10-14 19:16
查看更多