반응형
⚡️조건에 맞으면 값 출력
📌 DECODE(A, B, 1, C, 2, 3)
A와 B가 같을 때 1, A와 C가 같을 때 2, 만족하는 조건이 없으면 3 출력
-학생 테이블에서 학과번호가 101인 학생을 컴퓨터공학과 나머지 학과번호를 기타학과로 출력한다.
select name, deptno1,
decode(deptno1, 101, '컴퓨터공학', '기타학과') 학과명
from student
order by 2;
substr을 이용해 학생 테이블에서 주민등록번호의 7번 째 숫자를 따와 1이면 남자 2일 경우 여자를 출력한다.
select name, jumin,
decode(substr(jumin,7,1),1,'남자','여자') 성별
from student;
📌 DECODE(A, B, DECODE(C, D, 1, 2) 3)
A와 B가 같으면 C와 D를 비교해 같다면 1, 다르다면 2, A와 B가 같으면 3
물론 다중으로 조건문을 설정할 수도 있다.
-학과번호가 101이고 '전임강사'직을 가진 교수의 id만 출력한다.
select name, deptno,
decode(deptno, 101,
decode(position, '전임강사', '*101번 학과의 전임강사*', '101번 학과지만 전임강사 아님'),
'101번 학과가 아님')
from professor;
⚡️하나의 조건에 여러 값 출력
📌 CASE A WHEN B THEN ( 1 ) [WHEN C THEN ( 2 )] ELSE 출력3 END "컬럼명"
컬럼 A의 값이 B일 경우 1을 출력, A의 값이 C일 경우 2를 출력,
만족하는 조건이 없을 경우 3을 출력,
END로 구문을 마치고 컬럼명을 정해준다.
decode와 달리 여러 결과를 뽑아낼 때 더 유용하게 사용할 수 있다.
하지만 다중 조건을 사용할 땐 decode가 더 유리하니 각 상황에 맞는 함수를 사용해주면 좋다.
-전화번호의 지역번호를 이용해 거주지를 출력한다.
select name, tel,
case substr(tel, 1, instr(tel, ')') -1)
when '02' then '서울'
when '031' then '경기'
when '051' then '부산'
else '기타'
end 지역명
from student;
반응형
'Database > SQL' 카테고리의 다른 글
[Oracle/SQL] 시퀸스(Sequence)와 초기화하는 방법 (0) | 2022.02.21 |
---|---|
[Oracle/SQL] SUBSTR, INSTR 문자열 함수 (0) | 2021.12.08 |
[Oracle, SQL] NULL 제거하기 (0) | 2021.12.03 |
[Oracle, SQL] SELECT 문자 검색 (0) | 2021.12.02 |
[Oracle, SQL] SELECT 기본 문법, 컬럼 이름 변경, 컬럼 리터럴 추가 (0) | 2021.12.01 |
댓글