MySQL:用德语将String转换为Float / Decimal

时间:2011-11-14 12:20:55

标签: mysql string floating-point

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

因为我需要同一组中浮点值的平均值: 如何将这样的字符串转换为MySQL中的FLOAT? 只需AVG(CONVERT(value, DECIMAL))无法使用(返回99.00000),无法转换为FLOAT

Charset为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

任何想法?

了Christoph

PS。:我没有制作数据库布局......

2 个答案:

答案 0 :(得分:7)

你可以尝试

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

答案 1 :(得分:0)

字符串函数格式(x,d,locale)应该完全符合您的要求。见https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_format