TO_CHAR(숫자 [, 포맷]) : 숫자 데이터를 지정된 포맷의 문자열로 변경 TO_CHAR(날짜 [, 포맷]) : 날찌 데이터를 지정된 포맷의 문자열로 변경
포맷 형식
AM|PM : 오전/오후 중 알맞은 것을 표시 HH24: 시간(24시간) HH : 시간(12시간) MI : 분 SS : 초
SELECT TO_CHAR(1234, '99999') FROM DUAL; --'9' : 하나당 0~9사이 숫자 한칸, 숫자 없으면 빈칸, 오른쪽 정렬
SELECT TO_CHAR(1234, '00000') FROM DUAL; --'9' : 하나당 0~9사이 숫자 한칸, 숫자 없으면 0, 오른쪽 정렬
SELECT TO_CHAR(1000000, 'L9999999') FROM DUAL; -- 'L' : 현재 시스템상에 설정된 나라의 화폐 기호 --> 화폐 기호를 바꾸는 방법 : 1. 시스템의 설정 나라 변경, 2. L대신 화폐 기호를 직접작성
SELECT TO_CHAR(1000000, '$9999999') FROM DUAL; -- $로 직접 지정해줌
SELECT TO_CHAR(1000000, 'L9,999,999') FROM DUAL; -- 자릿수 구분 콤마(,) 사용 가능
SELECT TO_CHAR(1000000, 'L9999') FROM DUAL; --(주의사항) 포맷에 지정된 칸 수가 숫자보다 적을경우 '#'으로 추정된다 .
2. TO_DATE
날짜 형태의 문자열로 날짜 데이터(DATE)로 변환
작성법
TO_DATE('문자열' : 컬럼 [, 포맷] : 문자열을 날짜로 변환 TO_DATE('숫자' : 컬럼 [, 포맷] : 숫자를 날짜로 변환
예제1. 여러 날짜 표기 방법 다 가능 SELECT '20210915143720', TO_DATE('20210915143720') FROM DUAL; SELECT '2021-09-15', TO_DATE('2021-09-15') FROM DUAL; SELECT '2021/09/15', TO_DATE('2021/09/15') FROM DUAL; SELECT '2021.09.15', TO_DATE('2021.09.15') FROM DUAL; --> 기본적으로 많이 사용되는 날짜 표기 문자열은 자동으로 DATE 타입으로 변환된다.
예제 2. 연도 표기 SELECT TO_DATE('2021년 09월 15일','YYYY"년" MM"월" DD"일"') FROM DUAL;
예제 3. 연도 표기 포맷 R, Y SELECT TO_DATE('990915', 'YYMMDD') FROM DUAL; --> 2099-09-15 / YY의 문제점 SELECT TO_DATE('990915', 'RRMMDD') FROM DUAL; --> 1999-09-15 / RR의 문제점
🔎⭐연도 표기 포맷 R, Y의 차이점 ⭐
-- Y : 현재 세기(21세기 == 2000년대) -- R : 변환하는 숫자가 50 이상이면 이전 세기(1900) -- 변환하는 숫자가 50 미만이면 현재 세기(2000)
3. TO_NUMBER
문자열을 숫자로 변환 == Integer.parseInt("100"); Double.parseInt("3.14"); -> 자바에서 문자데이터를 숫자로 변환
SELECT EMP_ID, EMP_NAME, SALARY, CASE WHEN SALARY >= 5000000 THEN '고급' --WHEN SALARY >= 3000000 AND SALARY < 5000000 THEN '중급' WHEN SALARY >= 3000000 THEN '중급' ELSE '초급' END AS 구분 FROM EMPLOYEE WHERE DEPT_CODE = 'D6' ORDER BY JOB_CODE;
- WHEN SALARY >= 3000000 AND SALARY < 5000000 THEN '중급'
이렇게 쓰지 않는 이유
WHEN SALARY >= 5000000 THEN '고급'을 통해 이미 500만 이상인 경우를 만들었기 때문에
MAX(컬럼명) : 최대값, 가장 미래, 문자 순서 뒤쪽 MIN(컬럼명) : 최소값, 가장 과거, 문자 순서 앞쪽)
예제1. 부서코드가 D6인 부서의 가장 높은 급여, 가장 낮은 급여 SELECT MAX(SALARY), MIN(SALARY) FROM EMPLOYEE WHERE DEPT_CODE = 'D6';
4. COUNT( * | [DISTINCT] 컬럼명 )
RESULT SET에 포함되는 행의 개수를 반환 결과 행이 몇행인지를 알려준다
예제1. 전체 사원 수 조회 SELECT COUNT(*) FROM EMPLOYEE;
1) COUNT(*) : 조회되는 행 중 NULL값이 있으면 NULL 포함한 전체 행 개수를 반환 2) COUNT(컬럼명) : 특정 컬럼에서 NULL을 제외한 행의 개수를 반환 3) COUNT(DISTINCT 컬럼명) : 특정 컬럼에서 NULL + 중복을 제외한 행의 개수를 반환
예제1. DEPT_CODE가 있는 사원 수 조회 SELECT COUNT(*) FROM EMPLOYEE WHERE DEPT_CODE IS NOT NULL;
예제2. DEPT_CODE가 있는 사원 수 조회(중복 카운트 X) SELECT COUNT(DISTINCT DEPT_CODE) FROM EMPLOYEE;
예제3. 남자 / 여자 사원 수 조회 예제3-1. 남자 SELECT COUNT(*) FROM EMPLOYEE WHERE SUBSTR(EMP_NO,8,1) = '1';
예제3-2. 여자 SELECT COUNT(*) FROM EMPLOYEE WHERE SUBSTR(EMP_NO,8,1) = '2';
예제3-3. 전체 사원 수 조회 SELECT COUNT(*) "전체 사원 수", COUNT( DECODE( SUBSTR(EMP_NO,8,1) , '1' , '남' ) ) "남자 사원 수", COUNT( DECODE( SUBSTR(EMP_NO,8,1) , '2' , '여' ) ) "여자 사원 수" FROM EMPLOYEE;
예제 3
➡ DECODE( SUBSTR(EMP_NO,8,1) , '1' , '남' )를 컬럼명으로 결과값에서 COUNT를 통해 NULL값을 제외하고 반환한다.