부동 소수점 값을 조건으로 사용하여 SELECT 쿼리를 수행하려고 하면 예상치 못한 동작이 발생하는 경우가 많습니다. 다음 문제는 이 과제를 예시합니다.
<code class="sql">SELECT * FROM `table` WHERE `ident`='ident23' AND `price`='101.31';</code>
이 쿼리는 가격 열의 데이터베이스에 값 101.31이 나타나더라도 0개의 행을 반환합니다. 가격 조건을 제거하면 예상 행이 반환됩니다.
이 문제를 해결하려면 다음 해결 방법을 고려하십시오.
부동 소수점 값을 다음으로 캐스팅 비교하기 전에 DECIMAL 유형을 사용하면 적절한 정밀도가 보장됩니다.
<code class="sql">SELECT * FROM table WHERE CAST(price AS DECIMAL) = CAST(101.31 AS DECIMAL);</code>
금전적 가치에 대한 더 나은 정밀도를 제공하는 DECIMAL 유형으로 가격 열을 수정하는 것이 좋습니다.
ALTER TABLE `table` MODIFY COLUMN `price` DECIMAL;
위 내용은 다음은 제공된 텍스트를 기반으로 한 몇 가지 질문 기반 제목으로, 각 제목은 문제의 다양한 측면에 중점을 둡니다. 옵션 1(문제에 집중): * 내 MySQL SELECT 쿼리가 Res를 반환하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!