MySQL에서 나눗셈을 수행하면 기본적으로 결과의 정밀도가 낮게 표시될 수 있습니다. 이런 경우 CAST() 함수를 사용해 값을 DECIMAL 타입으로 변환하면 원하는 자릿수만큼 정밀한 계산 결과를 얻을 수 있습니다. 아래에서 테이블 생성부터 쿼리 실행까지 단계별로 살펴보겠습니다.
1. 예제 테이블 생성하기
먼저 정수 값을 저장할 테이블을 생성합니다.
mysql> create table DemoTable1823
(
Value int
);
Query OK, 0 rows affected (0.00 sec)2. 샘플 데이터 삽입하기
INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable1823 values(1); Query OK, 1 row affected (0.00 sec) mysql> insert into DemoTable1823 values(2); Query OK, 1 row affected (0.00 sec) mysql> insert into DemoTable1823 values(3); Query OK, 1 row affected (0.00 sec)
3. 저장된 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select * from DemoTable1823;
실행 결과는 다음과 같습니다.
+-------+ | Value | +-------+ | 1 | | 2 | | 3 | +-------+ 3 rows in set (0.00 sec)
4. CAST()로 나눗셈 정밀도 높이기
핵심은 Value 컬럼을 DECIMAL(30, 20)으로 변환한 뒤 나눗셈을 수행하는 것입니다. 여기서 DECIMAL(30, 20)은 전체 30자리 중 소수점 이하 20자리까지 표현하겠다는 의미입니다.
mysql> select cast(Value AS DECIMAL(30, 20)) / 3 as Result from DemoTable1823;
실행 결과는 다음과 같습니다.
+----------------------------+ | Result | +----------------------------+ | 0.333333333333333333333333 | | 0.666666666666666666666667 | | 1.000000000000000000000000 | +----------------------------+ 3 rows in set (0.00 sec)
위 결과를 보면 1÷3, 2÷3과 같이 나누어떨어지지 않는 연산도 소수점 이하 20자리까지 정확하게 계산된 것을 확인할 수 있습니다. 만약 더 높거나 낮은 정밀도가 필요하다면 DECIMAL(M, D)에서 D 값(소수점 이하 자릿수)을 조정하면 됩니다. 참고로 M의 최대값은 65, D의 최대값은 30입니다.