MySQLテーブルでは、異なる値を持つVARCHAR
列の列があります。これは、String、Integer、Float、Whateverの値を表します。これらの値をデータベースに言語固有の文字列として書かれている、これは(... VB.Netを使用して)123.45
のフロート値はドイツ語で"123,45"
のような文字列として記述することができる意味MySQL:文字列を浮動小数点数/ドイツ語に変換する
私は平均が必要と同じグループにある浮動小数値の値: このような文字列を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)
のようなsomethigは99.333333
、ない99
を生じるはずです。
すべてのアイデア?
クリストフ
PS:私は、そのデータベース・レイアウトをしなかった...
これは、状況によっては失敗する可能性があります。ドイツ語では、T1234.56の値に「1.234,56」と書かれています。上記の結果は '' 1.234.56 "という文字列になり、' 1'に変換されます。 –
@ChristophMühlmann:私の編集した投稿を試してください – Marco
あなたの編集したコードはうまくいくかもしれませんし、そうでないかもしれません:ポイントが小数点の場合はどうなりますか? データベースのレイアウトを少し変更することにしました。数値データ用の列(float、int、booleanは 'DECIMAL(30,10)' -columnに保存されます)と他のデータ(text、シリアル化されたデータ、バイナリデータなど)。 MySQLの数値列の値を直接計算することができます(AVG/MIN/MAX f.e.) –