database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 30583 게시물 읽기
No. 30583
FLOOR 함수 문의
작성자
강삼수(kssmd)
작성일
2013-05-02 11:43
조회수
9,554

궈리문 update 시 내부 필드와  내부 필드 곱하기 해서 정수만 가져오면 되는데

FLOOR(계산식)  사용해서 버리게되면 , 계산 결과가 소수없이 정수로 나온 경우에는  -1 이 되어나옵니다.

메뉴얼을 보니깐  결과숫자에서 가장 작은 정수를 가져온다라고 되어있더군요. 그러니깐  당연한 결과라 생각 됩니다. 

2001년도에 유사한 질문을 누가 했었는데 답변이 없더군요...

좀 복잡하지만  if 문장사용해서 계산 결과가 정수 이면 그대로 가져오고, 아니면 FLOOR 해서 가져와라 하면 될것 같은데,

 아시는분 좀 알려 주세요... 

 

이 글에 대한 댓글이 총 5건 있습니다.

이상하네요. 정상적으로 나오지 않나요?

MySQL 버전이 어찌 되는지

select floor(1) from dual

이 결과가 0 이라는 말씀?

박인호(paerae)님이 2013-05-02 15:02에 작성한 댓글입니다.

2001년도 질문에도 답글이 달려있네요.

해당 버전이하에서 MySQL의 버그로 보입니다.

업그레이드 가능하시면 최신 버전으로 업그레이드 해보세요.

 

박인호(paerae)님이 2013-05-02 15:07에 작성한 댓글입니다.

table 명 aaa

a 자료형에   float(5,3) = 4.1

b 자료형에   int(5) = 24840

 

위와 같은 테이블에서 select FLOOR(a*b)  from aaa  하면 정확히 101844 인데

실자료는 101843 이 나옵니다.

그래서 편법으로

select  FLOOR(a*b+0.001)   from aaa 해서 사용을 하고 있습니다.

좀 봐주세요....

강삼수(kssmd)님이 2013-05-02 18:41에 작성한 댓글입니다.
이 댓글은 2013-05-02 18:42에 마지막으로 수정되었습니다.

float형을 사용한 오차로 보입니다.

정확한 값을 저장하는 거라면

decimal 데이터type을 사용하세요.

변경이 가능하시면 아래 처럼 변경 후 해당 쿼리를 실행해 보세요.

 

alter table aaa
change a a decimal(5,3);

박인호(paerae)님이 2013-05-03 11:15에 작성한 댓글입니다.

아 !  감사합니다.

자료형을 decimal 로 수정하니깐 이상이 없습니다.

기존의 float 형을 decimal 로 수정해도 자료상에 문제가 없을지 궁금 합니다.

백업 해놓고 하면 되겠지만,  숨어있는 에라가 나중에 또 발견 될까봐 걱정이 됩니다.

다시한번 감사드립니다.

 

강삼수(kssmd)님이 2013-05-03 13:07에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
30587long_query_time 의 기준 time 문의드립니다. [2]
김재현
2013-05-08
10173
30585트랜젝션 [1]
기훈
2013-05-05
8888
30584mysql 5.6.10 에서 old_password 접속문제 [1]
김곤
2013-05-03
9588
30583FLOOR 함수 문의 [5]
강삼수
2013-05-02
9554
30582기간별 작업시간 구하기 [1]
왕초보
2013-04-17
9689
30581정렬 문제입니다. [1]
zzin
2013-04-17
8795
30580show status 원격서버 에서 실행. [1]
배원준
2013-04-12
10291
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다