MySQL 테이블에서 VARCHAR
- 열은 문자열 -, 정수 -, 부동 - 값 등을 나타내는 다른 값을가집니다. 이 값은 언어 별 String으로 데이터베이스에 기록됩니다. 즉, 123.45
의 float 값은 "123,45"
과 같은 String으로 쓸 수 있습니다 (VB.Net을 사용하여 ...)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)'- 열에 저장 됨)와 다른 데이터 (텍스트, 직렬화 된 데이터, 이진 데이터 등). 더 잘 작동하고 MySQL의 숫자 열의 값으로 직접 계산할 수 있습니다 (AVG/MIN/MAX f.e.) –