> 데이터 베이스 > MySQL 튜토리얼 > PostgreSQL 정수 나누기가 잘못된 결과를 반환하는 이유는 무엇입니까?

PostgreSQL 정수 나누기가 잘못된 결과를 반환하는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-27 22:58:12
원래의
326명이 탐색했습니다.

Why Does PostgreSQL Integer Division Return Incorrect Results?

PostgreSQL의 나누기 문제: 나누기(/)가 잘못된 결과를 반환하는 이유

PostgreSQL에서 정수 열이 있는 나누기를 계산하려고 하면 사용자가 다음과 같은 문제를 겪을 수 있습니다. 예상치 못한 결과를 만나다. 다음 시나리오를 고려하십시오.

문제:

"software"라는 테이블에 "dev_cost" 및 "sell_cost" 열이 포함되어 있습니다. dev_cost를 회수하기 위해 판매해야 하는 소프트웨어의 수량을 결정하려고 합니다. "dev_cost"가 16000이고 "sell_cost"가 7500인 경우 결과는 3이 될 것으로 예상됩니다. 그러나 쿼리

select dev_cost / sell_cost from software;
로그인 후 복사

는 대신 2를 반환합니다.

원인:

PostgresSQL은 정수 나누기를 수행합니다. 결과를 0으로 자릅니다. "dev_cost" 및 "sell_cost"는 모두 정수로 정의되므로 결과는 2로 잘립니다.

해결책:

올바른 결과를 얻으려면 적어도 하나 피연산자는 부동소수점 또는 소수점 같은 부동 소수점 유형으로 캐스팅되어야 합니다. 이는 Cast() 함수나 이중 콜론 :: 연산자:

select cast(dev_cost as decimal) / sell_cost from software;
로그인 후 복사

or

select dev_cost::decimal / sell_cost from software;
로그인 후 복사

를 사용하여 수행할 수 있습니다. 또는 다음을 사용하여 결과를 가장 가까운 정수로 반올림할 수도 있습니다. 천장() 함수:

select ceil(dev_cost::decimal / sell_cost) from software;
로그인 후 복사

데모:

[SQLFiddle 데모](https://www.sqlfiddle.com/#!17/23da8/1)

위 내용은 PostgreSQL 정수 나누기가 잘못된 결과를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿