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}}
    -
목록형 📷 갤러리형
제목
[기본형] HTML (with 부트스트랩5.3 , jquery 3.7, vue.js)
유용한 리눅스(LINUX) 명령어
[공지] 기술 게시판
2.25
2.27
2.28
3.1
3.2
3.3
3.4
3.5
3.7
3.9
3.11
3.12
3.13
3.14
3.15
3.16
3.17
3.18
3.19
3.20
3.21
3.22
3.23
3.24
3.25
3.27
3.28
3.29
3.30
3.31
4.1
4.2
4.3
4.4
4.5
4.6