MySQL에서 검색에 사용되는 필드는 float로 설정하지 말아라.

테이블 구조
테이블명 : t_float
 f_idx  f_float  
------  ---------
     1          1
     2         10
     3        0.2
     4       0.23
     5      0.234

쿼리1 : SELECT * FROM `t_float` WHERE f_float = 0.2
=>
 f_idx  f_float  
------  ---------

----------------=---------------------
f_idx가 3인 row가 나올 것으로 예상하겠지만, 아니다.

부동 소수점인 경우 실제 보이는 값 뒤에 잡다한 값이 섞여 있다.
정수 부분만 사용한다면 모르겠지만, 소수 부분까지 쓴다면 검색이 힘들다.




쿼리2 : SELECT * FROM `t_float`
WHERE f_float > 0.19 AND f_float < 0.21
=>
 f_idx  f_float  
------  ---------
     3        0.2




쿼리3 : SELECT *,FORMAT(f_float,14) FROM `t_float`
=>
 f_idx  f_float  format(f_float,14)  
------  -------  --------------------
     1        1  1.00000000000000    
     2       10  10.00000000000000   
     3      0.2  0.20000000298023    
     4     0.23  0.23000000417233    
     5    0.234  0.23399999737740    

소수점이 있는 숫자는 뒤에 이상한 값들이 붙어있다.
댓글
  • No Nickname
    No Comment
  • 권한이 없습니다.
    {{m_row.m_nick}}
    -
제목 작성자 날짜
공대여자
공대여자
mins01
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자