본문 바로가기
[DataBase]/MySql

서브쿼리 소수점 문제 발견

by control+c 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/


반응형

댓글