Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 CAST()로 값 하나를 캐스팅한 후 다른 값으로 나누는 방법

MySQL에서 정수형 컬럼끼리 나눌 때 소수점 이하까지 정밀한 결과를 얻으려면 CAST() 함수를 활용하는 것이 좋습니다. 값 하나를 DECIMAL 타입으로 캐스팅한 후 나누기를 수행하면 훨씬 정확한 계산 결과를 얻을 수 있습니다. 아래 예제와 함께 살펴보겠습니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable1352
    -> (
    -> Value1 int,
    -> Value2 int
    -> );
Query OK, 0 rows affected (0.54 sec)

2. 데이터 삽입하기

insert 명령을 사용하여 테이블에 레코드를 삽입합니다.

mysql> insert into DemoTable1352 values(10,30);
Query OK, 1 row affected (0.42 sec)
mysql> insert into DemoTable1352 values(40,60);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1352 values(110,130);
Query OK, 1 row affected (0.18 sec)

3. 데이터 조회하기

select 문을 사용하여 테이블의 전체 레코드를 확인합니다.

mysql> select * from DemoTable1352;

실행 결과는 다음과 같습니다.

+--------+--------+
| Value1 | Value2 |
+--------+--------+
|     10 |    30 |
|     40 |    60 |
|    110 |    130 |
+--------+--------+
3 rows in set (0.00 sec)

4. CAST()를 적용한 나누기 쿼리

이제 Value1을 DECIMAL(18,14) 타입으로 캐스팅한 후 Value2로 나누는 쿼리입니다.

mysql> select cast(Value1 as DECIMAL(18,14)) / Value2 from DemoTable1352;

소수점 이하까지 매우 정밀한 나누기 결과가 출력됩니다.

+-----------------------------------------+
| cast(Value1 as DECIMAL(18,14)) / Value2 |
+-----------------------------------------+
|               0.333333333333333333 |
|               0.666666666666666666 |
|               0.846153846153846153 |
+-----------------------------------------+
3 rows in set (0.00 sec)

참고: CAST() 없이 정수끼리 단순히 나누면 MySQL은 기본적으로 제한된 소수점 자릿수만 표시합니다. DECIMAL(18,14)처럼 소수점 자릿수를 넉넉하게 지정하면 10/30 = 0.333333...처럼 반복되는 소수도 원하는 정밀도 그대로 확인할 수 있습니다.