개발자의 끄적끄적

[DBMS] MySQL에서 검색에 사용되는 필드는 float로 설정하지 말아라.[하지 말아라.[펌] 본문

개발/sql

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

효벨 2020. 8. 8. 03:00
728x90
반응형

[DBMS] 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   

소수점이 있는 숫자는 뒤에 이상한 값들이 붙어있다.

 

 

출처 : phpschool.com/link/tipntech/82436

반응형
Comments