4. 변환함수
문자 → 숫자 : to_number
문자 → 날짜 : to_date
숫자 → 문자, 날짜 → 문자 : to_char
날짜를 문자로 to_char
날짜를 문자로 : 날짜를 보기 좋게 표현하기 위해 사용
to_char(날짜, '사용자 형식')
날짜 형식 요소를 활용해서 사용자 포맷을 작성함
사용자 형식을 작은 따옴표 안에 써준다.
※날짜 형식 요소
년도
YYYY : 숫자로 된 전체 연도표시
YEAR : 영어 철자로 표기된 연도 표시
RR,YY : 연도를 2자리 숫자로 표시
월
MM : 월을 2자리 숫자 값으로 표시
MONTH : 전체 월 이름을 표시
MON : 월의 영어 약자로 표시
요일
DY : 3문자로 된 요일 약어 표시
DAY : 요일의 전체 영어 이름 표시
날짜
DD : 숫자 형식의 월간 일(01~31)
영문으로 표시되는 형식 요소(YEAR, MONTH, MON,DY, DAY)는 대소문자 구분
ex) MON -> JAN, Mon -> Jan, mom -> jan
시간
HH : 시간을 12시간으로 표현. 오후일 경우 02
HH24 : 시간을 24시간으로 표현
MI : 분
SS : 초
사용자 형식에 문자열을 넣을 때 큰 따옴표로 묶어 추가함.
※SQL 구문에서 큰따옴표가 사용되는 경우
- 컬럼명 as "Alias" → 대소문자 구분, 공백 포함, 특수문자 포함 시
- to_char(sysdate, '원하는 포맷으로 바꾸고 중간에 "문자열"이 들어갈 경우') → 사용자 포맷 내 문자열 포함 시
이 외에는 작은 따옴표 사용하면 된다.
날짜 형식 요소
ddsp : 날짜를 영문으로 출력
ddpsth : 날짜를 영문 서수로 출력
숫자를 문자로 to_char
to_char(숫자, '사용자형식') : 숫자를 보기 편하게 출력하기 위해서 사용
9 : 0~9까지 숫자를 의미
0 : 0을 의미, 0이 표시되도록 강제 적용
$ : 통화단위
L : 통화단위(로컬)
. : 소수점 출력
, : 천단위 구분 기호 출력
문자 → 숫자로 to_number(char[, '사용자 형식'])
[emp]
num char char
emp_id | name | salary
100 | King | $24,000
101 | Kochhar | $17,000
102 | Abel | $9,000
103 | Dehanan | $12,000
--------------------------------------------
select emp_id, name ,salary from emp;
보기 좋게 출력된다. 하지만 salary는 계산을 많이 해야하는 컬럼이다.
char 형식이기 때문에 select salary*12 from emp; 를 했을 경우 에러가 난다.
이럴 때 사용하는 것이 to_number이다.
select emp_id, name, to_number(salary,'$999,999') *12 ann_sal from emp;
to_number('$9,000' ,'$999,999') => 9000
문자열, 숫자형식요소를 사용해서 문자열의 의미
단 컬럼의 데이터가 같을때 가능함.
(사실 사용할 일이 없다.)
문자 → 날짜 to_date(char(문자열)[, '사용자 형식(날짜형식요소를 사용해서 문자열의 의미를 알려줌'])
to_date('04-10-05', 'MM-DD-RR') => 2005-04-10 날짜로 인식
문자열, 날짜형식 요소를 사용해서 문자열의 의미
5. 일반함수
- nvl(expr1, expr2) ★가장 중요, 가장 많이 사용
expr1이 null이 아니면 expr1을 반환하고, expr1이 null이면 expr2를 반환함.
즉, null값을 실제값으로 변환해주는 함수
첫번째 인수와 두번째 인수의 데이터 유형이 일치해야함.
하나의 컬럼에는 같은 데이터 타입만 가능하기 때문에 데이터 타입이 같아야한다.
※MySQL에서는 ifnull 함수와 같다. ifnull(expr1, expr2) == nvl(e1, e2)
- nvl2(expr1, expr2, expr3)
expr1이 null이 아니면 expr2를 반환, expr1이 null이면 expr3을 반환함.
expr2, expr3 데이터 타입이 같아야함.
- nullif(expr1, expr2)
expr1, expr2를 비교해서 같으면 null이 반환, 다르면 expr1을 반환함.
- conalesce(expr1, expr2,..., exprn)
nvl함수의 확장
null값을 실제 값으로 변환해주는 함수
expr1이 null이 아니면 expr1 반환, expr1이 null이면 expr2를 검사. expr2가 null이 아니면 expr2를 반환함.
expr2가 null이면 expr3을 검사. expr3가 null이 아니면 expr3을 반환함...
마지막에 대체 값이 존재하고 있어야함.
인수의 데이터 타입이 같아야함.
연습문제
퀴즈
'KDT > DB' 카테고리의 다른 글
240126 DB - JOIN 2, 고급 JOIN 1 (0) | 2024.01.26 |
---|---|
240110 DB - 그룹함수, JOIN 1 (0) | 2024.01.10 |
240105 DB - 단일 행 함수 1 (0) | 2024.01.05 |
240103 DB - 조건문과 정렬 (0) | 2024.01.03 |
231229 DB - select 구문을 사용한 데이터 검색 (0) | 2023.12.29 |