DB

TO_CHAR 함수

hyun9_9 2024. 2. 9. 22:46

TO_CHAR 함수는 Oracle에서 숫자, 날짜 및 문자열 데이터를 문자열로 변환하는 데 사용됩니다. 이 함수는 다양한 형식의 데이터를 문자열로 변환할 수 있습니다.

 

TO_CHAR(expression, format_mask)

 

  • expression: 변환할 값입니다.
  • format_mask: 문자열로 변환할 때 적용할 형식입니다.

TO_CHAR 함수를 사용하면 날짜를 원하는 형식으로 변환하거나 숫자를 문자열로 변환할 수 있습니다. 예를 들어, 날짜를 'YYYY-MM-DD' 형식으로 표시하거나, 숫자를 특정 형식으로 변환할 수 있습니다.

 

EX)

SELECT 
			 M.MID, M.LOGIN_ID, M.MPW, M.NAME, M.EMAIL, M.ADDRESS, M.GENDER, M.AGE, M.GRADE, M.CELL_PHONE, 
			  NVL(SUM(S.AMOUNT), 0) AS TOTAL, 
			CASE
        		WHEN NVL(SUM(S.AMOUNT), 0) = 0 THEN '-' -- TOTAL이 0이면 '-'을 할당
       			ELSE TO_CHAR(RANK() OVER (ORDER BY NVL(SUM(S.AMOUNT), 0) DESC, MIN(S.REG_DATE)))
    		END AS RANKING  
    		FROM 
			 MEMBER M LEFT JOIN     SUPPORT S ON M.LOGIN_ID = S.LOGIN_ID GROUP BY 
			 M.MID, M.LOGIN_ID, M.MPW, M.NAME, M.EMAIL, M.ADDRESS, M.GENDER, M.AGE, M.GRADE, M.CELL_PHONE;

 

 

TO_CHAR 함수를 사용한 이유

위의 SQL 구문에서 TO_CHAR 함수가 사용된 이유는 RANK() OVER 함수가 반환하는 숫자 값을 문자열로 변환하기 위함입니다. RANK() OVER 함수는 순위를 숫자 형식으로 반환하지만, '-'와 같은 문자로 표시해야 하는 경우가 있습니다.

예를 들어, 만약 TOTAL 값이 0인 경우에는 '-'를 표시해야 하기 때문에 TO_CHAR 함수를 사용하여 숫자 값을 문자열로 변환하여 '-'를 표시합니다.

위의 쿼리에서는 TOTAL 값이 0인 경우에는 '-'를 할당하고, 그 외의 경우에는 RANK() 함수가 반환하는 숫자 값을 문자열로 변환하여 사용자에게 표시합니다.

이렇게 함으로써 데이터를 보다 의미 있는 형태로 표시할 수 있습니다.