본문 바로가기
[DataBase]/MySql

서브쿼리 소수점 문제 발견

by 조조군 2017. 2. 22.
반응형

서브쿼리로 다른 테이블의 소수을 select 해오는 서브쿼리를 날렸을때 결과가 이상하게 나온다. 




실제 merchant 테이블에는 0.04 데이터를 가진 row 1개만 있다. 


frg_charge의 타입은 float이다. 


쿼리를 날리면 이상없이 가져오지만


서브쿼리로 가져오면 이상하게도 소수점 자릿수가 늘어나면서 값이 달라진다. 


무려 15자리가 추가되었다. 


float나 double의 경우 2진수로 저장되고 2진수로는 10진수의 표현을 정확하게 표현할 수 없다. 


이때 소숫점을 10진수로 저장하면 되는데 데이터타입을 DECIMAL로 변경해주면 된다. 


자세한 내용은 아래의 주소에 다른분이 잘정리해놓았다. 


https://honux77.wordpress.com/2014/06/12/mysql%EC%97%90%EC%84%9C-%EC%A0%95%ED%99%95%ED%95%9C-%EC%86%8C%EC%88%98%EC%A0%90-%EC%88%98%EB%A5%BC-%ED%91%9C%ED%98%84%ED%95%98%EA%B8%B0/


반응형

댓글