MySQL:将字符串转换为德文的浮点/小数 [英] MySQL: Convert String to Float/Decimal in german language

查看:214
本文介绍了MySQL:将字符串转换为德文的浮点/小数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

因为我需要浮点值的平均值至极相同的组:
如何在MySQL中将这样的字符串转换为 FLOAT
简单的 AVG(CONVERT(value,DECIMAL))将不起作用(返回99.00000),转换为 FLOAT 是不可能的。
$ b 字符集是 utf8 ,整理是 utf8_general_ci



样本表:

  id |值|组
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

:我没有做数据库布局...

解决方案

您可以尝试

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


In a MySQL-table I have a VARCHAR-column with different values, which may represent String-, Integer-, Float-, Whatever-Values. These Values are written as a language-specific String into the Database, this means a float-value of 123.45 may be written as a String like "123,45" in german language (using VB.Net...)

As I need average values of float-values wich are in the same group: How can I cast such a string to a FLOAT within MySQL? Simply AVG(CONVERT(value, DECIMAL)) won't work (returns 99.00000), conversion to FLOAT is not possible.

Charset is utf8, Collation is utf8_general_ci.

Sample table:

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

Goal: somethig like SELECT AVG(CONVERT(value, DECIMAL)) FROM table WHERE (group=1) should result in 99.333333, not 99.

Any Ideas?

Christoph

PS.: I did not make that database-layout...

解决方案

You could try

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

这篇关于MySQL:将字符串转换为德文的浮点/小数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆