DB

[SQL] Return a number type to a string type

seungwonlee 2024. 2. 21. 17:45

등록한 데이터 입력 값이 "0.1" 이면  ".1" 로 "0" 이 제거된 상태로 화면에 조회되어 등록이 잘못되었다고 연락을 받았습니다. 입력된 데이터가 잘못 등록되어 있는지 DB를 확인해 보니 정상적으로 등록되어 있었고 조회 Query 또한 문제가 없었습니다. 해당 데이터 Column의 타입은 Number였고 조회된 결괏값을 받는 VO에 해당 변수 타입이 String으로 선언되어 있었습니다. 결괏값을 받는 VO에 String으로 선언한 게 "0"을 절사 시킨 원인이었습니다. 그래서 Query에 "TO_CHAR", "RTRIM"를 사용하여 문제를 해결했습니다. DBMS는 Tibero입니다.

 

1. TO_CHAR()

 - 날짜, 숫자 등의 값을 문자열로 변환하는 함수

SELECT TO_CHAR(0.1, 'FM9990.99') FROM DUAL;
-- 1번 결과: 0.1

SELECT TO_CHAR(1, 'FM9990.99') FROM DUAL;
-- 2번 결과: 1.

위와 같이 1번 소수점이 포함되어 있는 값은 원하는 결괏값인 "0.1" 반환해 주지만 2번 정수값인 경우 "1."으로 "."이 포함되어 반환이 되었습니다.

 

2. RTRIM

- 오른쪽 특정 문자 제거 함수

SELECT RTRIM(TO_CHAR(0.1, 'FM9990.99'), '.') FROM DUAL;
-- 1번 결과: 0.1

SELECT RTRIM(TO_CHAR(1, 'FM9990.99'), '.') FROM DUAL;
-- 2번 결과: 1

위와 같이 정수값은 소수점 표시를 안 하기 때문에 2번과 같이 RTRIM 함수를 사용해서 "."을 제거해 주시면 됩니다.

 

끝.

728x90