MySQL에서 DECIMAL 타입 컬럼에 저장된 값은 소수점 자릿수가 고정되어 있어 10.7890, 89.9000처럼 끝에 불필요한 0이 붙어 출력되는 경우가 많습니다. 이런 후행 0(trailing zeros)을 제거하고 싶다면 trim() 함수를 활용하면 간단하게 해결할 수 있습니다.
기본 문법
trim() 함수로 공백을 제거한 뒤 +0을 더해주면 문자열이 다시 숫자로 변환되면서 후행 0이 자동으로 사라집니다.
select trim(yourColumnName)+0 As anyAliasName from yourTableName;
예제로 확인하기
1. 테이블 생성
먼저 소수점 넷째 자리까지 저장 가능한 DECIMAL(10,4) 타입의 테이블을 생성해 보겠습니다.
mysql> create table removeTrailingZero
-> (
-> Number DECIMAL(10,4)
-> );
Query OK, 0 rows affected (0.83 sec)2. 샘플 데이터 삽입
insert 명령을 사용해 여러 개의 소수 값을 입력합니다.
mysql> insert into removeTrailingZero values(10.789); Query OK, 1 row affected (0.19 sec) mysql> insert into removeTrailingZero values(89.90); Query OK, 1 row affected (0.18 sec) mysql> insert into removeTrailingZero values(8999.70); Query OK, 1 row affected (0.20 sec) mysql> insert into removeTrailingZero values(0.40); Query OK, 1 row affected (0.23 sec) mysql> insert into removeTrailingZero values(0.0); Query OK, 1 row affected (0.16 sec)
3. 저장된 데이터 확인
select 문으로 전체 레코드를 조회해 보겠습니다.
mysql> select * from removeTrailingZero;
DECIMAL(10,4)로 정의했기 때문에 모든 값이 소수점 넷째 자리까지 0으로 채워져 출력됩니다.
+-----------+ | Number | +-----------+ | 10.7890 | | 89.9000 | | 8999.7000 | | 0.4000 | | 0.0000 | +-----------+ 5 rows in set (0.00 sec)
후행 0 제거 쿼리 실행
이제 trim() 함수와 +0을 조합해 후행 0을 제거해 보겠습니다.
mysql> select trim(Number)+0 As WithoutTrailingZero from removeTrailingZero;
실행 결과, 불필요한 0이 모두 제거되고 실질적인 숫자만 깔끔하게 출력되는 것을 확인할 수 있습니다.
+---------------------+ | WithoutTrailingZero | +---------------------+ | 10.789 | | 89.9 | | 8999.7 | | 0.4 | | 0 | +---------------------+ 5 rows in set (0.00 sec)
정리
trim(컬럼명)+0 패턴은 MySQL에서 후행 0을 제거하는 가장 간단하고 널리 쓰이는 방법입니다. trim()이 앞뒤 공백을 제거한 결과를 숫자로 변환하는 과정에서 소수점 이하의 의미 없는 0들이 자연스럽게 잘려나가기 때문입니다. 참고로 CAST나 FORMAT 함수를 활용하는 방법도 있지만, 형식 변환 없이 원본 값 그대로 유지하면서 0만 제거하고 싶다면 위 방법이 가장 효율적입니다.