[MSSQL] 소수점 이하 0 제거 방법 (FORMAT 함수, FM)
- 데이터베이스/MSSQL
- 2020. 9. 12.
SQL Server 2012 버전부터 FORMAT() 함수를 사용하여 소수점의 형식을 변경할 수 있는 기능이 추가 되었다. 오라클 SQL의 TO_CHAR 함수와 FM을 사용하는 방법과 비슷하다.
SQL Server 2012 이전 버전에서는 DECIMAL 형의 값을 FLOAT 형으로 변환하는 방법으로 소수점 이하의 0값을 제거하였지만, FORMAT 함수를 사용하면 간편하게 변환이 가능하다.
SELECT FORMAT(123.456700, '##0.######') AS result
주의할 점은 숫자의 최대 자리수와 포맷(# or 0)의 길이가 일치해야 한다. 만약 소수점 이하의 값의 길이보다 "#"의 길이가 짧으면 해당 위치에서 반올림하여 표시한다.
#은 수치값의 "0"을 제거하고, "0"은 해당 자리에 "0"을 표시한다. 위의 예제에서 첫째 자리에 "0"으로 지정한 이유는 정수값이 없으면 "0"으로 표시하고 이후 소수점을 표시한다.
SQL Server 2012 이전 버전
SELECT CAST(CAST(123.456700 AS DECIMAL(9,6)) AS FLOAT) AS result
SQL Server 2012 이전 버전에서는 FORMAT 함수를 사용하여 변경을 할 수 없기 때문에 위의 방법을 사용하면 된다. DECIMAL 형을 FLOAT 형으로 변환을 하는 것이기 때문에 정밀한 값은 차이가 발생할 수 있어 주의해야 한다.
사용 예제
result1 : 정수 첫째 자리는 "0"으로 표시, 소수 여섯 자리 표시 및 끝 "0" 제거
result2 : 수소 둘째 자리까지 반올림하여 표시
result3 : 소수 자리의 값을 "0" 포함하여 모두 표시
result4 : 정수 첫째 자리의 값이 없을 경우 표시 안 함