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

MySQL에서 천 단위 구분 기호는 '.', 소수점 구분 기호는 ','로 숫자 형식 지정하는 방법

FORMAT() 함수로 숫자 형식 지정하기

천 단위 구분 기호와 소수점 구분 기호를 원하는 형태로 변경하려면 MySQL의 FORMAT() 함수를 사용하면 됩니다. 이 기능은 MySQL 5.5 이상 버전부터 지원되며, 여기서는 8.0.12 버전을 기준으로 설명합니다.

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.12    |
+-----------+
1 row in set (0.00 sec)

기본 문법

FORMAT() 함수의 세 번째 인수에 로케일(locale) 값을 전달하면 해당 국가의 숫자 표기 규칙이 적용됩니다. 독일(de_DE) 로케일은 천 단위 구분 기호로 마침표(.)를, 소수점 구분 기호로 쉼표(,)를 사용하므로 원하는 결과를 얻을 수 있습니다.

SELECT FORMAT(컬럼명, 소수점_이하_자릿수, 'de_DE') AS 별칭
FROM 테이블명;

예제 테이블 생성

위 문법을 실제로 확인하기 위해 먼저 테이블을 생성해 보겠습니다.

mysql> create table formatNumberDemo
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Number DECIMAL(19,1)
    -> );
Query OK, 0 rows affected (1.13 sec)

샘플 데이터 삽입

INSERT 명령으로 예제에 사용할 데이터를 입력합니다.

mysql> insert into formatNumberDemo(Number) values(10000000000000.2);
Query OK, 1 row affected (0.15 sec)
mysql> insert into formatNumberDemo(Number) values(1000.4);
Query OK, 1 row affected (0.21 sec)
mysql> insert into formatNumberDemo(Number) values(1000000.6);
Query OK, 1 row affected (0.11 sec)
mysql> insert into formatNumberDemo(Number) values(100000000.7);
Query OK, 1 row affected (0.17 sec)
mysql> insert into formatNumberDemo(Number) values(100000000000000000.8);
Query OK, 1 row affected (0.15 sec)

저장된 데이터 확인

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from formatNumberDemo;

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

+----+----------------------+
| Id | Number               |
+----+----------------------+
| 1  | 10000000000000.2     |
| 2  | 1000.4               |
| 3  | 1000000.6            |
| 4  | 100000000.7          |
| 5  | 100000000000000000.8 |
+----+----------------------+
5 rows in set (0.00 sec)

숫자 형식 변환 쿼리 실행

다음은 천 단위 구분 기호를 '.', 소수점 구분 기호를 ','로 지정하여 숫자를 출력하는 쿼리입니다. 소수점 이하는 세 자리까지 표시하도록 설정했습니다.

mysql> SELECT FORMAT(Number, 3, 'de_DE') AS Numberformat from formatNumberDemo;

결과를 보면 독일식 표기 규칙에 따라 숫자가 정상적으로 변환된 것을 확인할 수 있습니다.

+-----------------------------+
| Numberformat                |
+-----------------------------+
| 10.000.000.000.000,200      |
| 1.000,400                   |
| 1.000.000,600               |
| 100.000.000,700             |
| 100.000.000.000.000.000,800 |
+-----------------------------+
5 rows in set (0.00 sec)

참고: FORMAT() 함수는 결과를 문자열로 반환하며 값이 반올림 처리됩니다. 또한 세 번째 인수를 생략하면 기본적으로 'en_US' 로케일이 적용되어 천 단위 구분 기호로 쉼표(,)가 사용되니, 원하는 표기 방식에 따라 로케일 값을 적절히 지정해 주세요.