변환함수
묵시적 변환
- 변환함수를 사용하지 않아도 데이터의 타입이 자동으로 변하는 것
- '문자' -> 날짜 : '문자'가 유효한 날짜 형식의 문자인 경우 날짜로 변경된다
- '문자' -> 숫자 : '문자'가 숫자로만 구성되어 있으면 숫자로 변경된다
SELECT *
FROM EMPLOYEES
WHERE HIRE_DATE >= '2005/01/01' AND HIRE_DATE < '2005/07/01';
* 위의 SQL에서 HIRE_DATE가 DATE타입의 컬럼이기 때문에 '2005/01/01'문자가 DATE타입의 값으로 자동으로 변환된다
* '2005/01/01'이나 '2005-01-01'의 형식인 경우 자동으로 변환된다
SELECT *
FROM EMPLOYEES
WHERE DEPARTMENT_ID = '10';
* 위의 SQL문에서 DEPARTMENT_ID가 NUMBER타입의 컬럼이기 때문에 '10'문자가 NUMBER타입의 값으로 자동으로 변환된다
명시적 변환
- 변환함수를 사용해서 '문자' 와 날짜, '문자' 와 숫자 간의 데이터변환을 하는 것이다
TO_DATE('날짜형식의 문자열', '패턴')
예) TO_DATE('2023/01/01')
* 문자열이 날짜형식의 텍스트이기 때문에 패턴을 지정하지 않아도 DATE타입으로 변환된다
TO_DATE('20230101', 'YYYYMMDD')
* 문자열이 일반적이니 날짜 형식이 아닌 경우에는 패턴을 지정해야 한다
TO_CHAR(날짜, '포맷')
날짜를 지정된 포맷형식의 텍스트를 변환한다
날짜 변환 형식
AM '오전'
PM '오후'
YYYY, YY '2022'
MM 월
D 1~7(1:일요일, 7:토요일)
DAY 요일
DD 1~31
HH 12시간제 시간
HH24 24시간제 시간
MI 분
SS 초
* 날짜 변환 형식은 대소문자를 구분하지 않는다
문자를 날짜로 변환하는 예시
날짜를 문자로 변환하는 예시
특정 날짜값에 해당하는 값을 조회할때 문자를 사용해서 조회하기
TO_CHAR를 사용해서 숫자를 문자로 바꾸는 것이 가능하다
TO_NUMBER를 사용해서 문자를 숫자로 변환이 가능하다
단일행 함수 - 기타함수
NVL(컬럼, 대체값)
- NVL함수는 NULL값을 다른 값으로 변환한다
- 지정된 컬럼의 값이 NULL이 아닌 경우에는 해당 컬럼의 값을 반환한다
- 해당 컬럼과 대체값은 데이터 타입이 동일한 타입이어야 한다
NVL2(컬럼, 대체값, 대체값2)
- 지정된 컬럼의 값이 NULL이 아니면 대체값1이 반환되고, NULL이면 대체값2가 반환된다
- 대체값1과 대체값2는 데이터 타입이 동일한 타입이어야 한다
NVL 사용예시
단일행 함수 - 기타함수
DECODE(컬럼, 비교값1, 값1,
비교값2, 값2,
비교값3, 값3,
기본값)
지정된 컬럼의 값이 비교값1과 같으면 값1이 반환
비교값2와 같으면 값2가 반환
비교값3과 같으면 값3이 반환
일치하는 값이 없으면 기본값이 반환된다
* DECODE함수는 컬럼의 값과 비교값간의 EQUALS 비교만 가능하다
CASE ~ WHEN 표현식
CASE
WHEN 조건식1 THEN 값1
WHEN 조건식2 THEN 값2
WHEN 조건식3 THEN 값
ELSE 값4
END
* 조건식1이 TRUE로 판정되면 THEN의 값이 최종값이 된다
* 모든 조건식이 FALSE로 판정되면 ELSE의 값4가 최종값이 된다
* 조건식에서는 =, >, >=, <, <=, != 등의 다양한 연산자를 사용해서 조건식을 작성할 수 있다
* DECODE함수에 비교했을 때 더 다양한 조건을 적용할 수 있다
CASE 컬럼
WHEN 조건식1 THEN 값1
WHEN 조건식2 THEN 값2
WHEN 조건식3 THEN 값3
ELSE 값4
END
* 지정된 컬럼의 값이 비교값들 중 하나와 일치하면 해당 THEN의 값이 최종값이 된다
* 모든 비교값과 일치하지 않으면 ELSE의 값4가 최종값이 된다
* DECODE 함수와 기능면에서 동일하다
CASE ~ WHEN ~ END 사용예시
DECODE 사용예시
'SQL' 카테고리의 다른 글
SQL_그룹함수(GROUP BY, HAVING) (0) | 2023.12.14 |
---|---|
SQL_Join (0) | 2023.12.13 |
SQL_오라클 내장함수 (문자함수, 숫자함수, 날짜함수) (1) | 2023.12.11 |
SQL_오라클의 데이터타입 (2) | 2023.12.07 |
SQL_테이블, DML (2) | 2023.12.06 |