在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。:我没有制作数据库布局......
答案 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