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' 로케일이 적용되어 천 단위 구분 기호로 쉼표(,)가 사용되니, 원하는 표기 방식에 따라 로케일 값을 적절히 지정해 주세요.