본문 바로가기
Database/Oracle

[오라클(Oracle) 기초] IN / Like / is null / nvl

by Ali1020 2022. 4. 12.

[오라클(Oracle) 기초]   in / like / is null / nvl을 이용한 조건 검색

 

1. IN 연산자

2. like 연산자

3. is null

4. nvl

 

 

1. IN 연산자

- IN(a, b , c...) 

- a, b, c, ... 값들 중 하나라도 해당되면 참

 

ex) student 테이블에서 학년이 1학년이거나 2학년인 학생을 검색하여 이름, 학년 출력

1
2
3
select name, grade
from student
where grade in('1''2');
cs

(where grade = '1' or grade ='2' 와도 동일한 결과)

 

 

ex) emp 테이블에서 급여가 150 또는 250 또는 350인 사원을 검색하여 사원 번호, 이름, 급여 출력

1
2
3
select empno, ename, sal
from emp
where sal in (150,250,350);
cs

(where sal = 150 or sal = 250 or sal = 350 와도 동일한 결과)

 

 

 

2. like 연산자

 

(1) 문자열 검색

ex) student 테이블에서 이름이 '김지연'인 학생의 학번, 이름을 조회

1
2
3
select studno, name
from student
where name = '김지연';
cs

 

(2) like 연산자

위의 예시와 같이 검색할 정확한 문자열을 알고 있을 경우에는 문제가 없지만 성이 '김'인 학생, 이름 마지막 글자가 '연'인 학생 등 문자열의 일부분으로 검색할 경우에는 와일드카드와 like 연산자를 활용한다.

 

※ 와일드카드

- % : 모든 문자

- _(언더바) : 하나의 문자

 

ex) student 테이블에서 이름이 '김'으로 시작하는 학생의 학번, 이름 출력

 1) % 사용한 경우 

1
2
3
select studno, name
from student
where name like '김%';
cs

 

 2) 언더바(_) 사용한 경우(이름 3글자라 가정) 

1
2
3
select studno, name
from student
where name like '김__';
cs

 

ex) student 테이블에서 이름이 '영'으로 끝나는 학생의 학번, 이름 출력

 1) % 사용한 경우

1
2
3
select studno, name
from student
where name like '%영';
cs

 

 2) 언더바(_) 사용한 경우(이름 3글자라 가정) 

1
2
3
select studno, name
from student
where name like '__영';
cs

 

 

ex) student 테이블에서 이름에 '수'가 들어가는 학생의 학번, 이름 출력

1
2
3
select studno, name
from student
where name like '%수%';
cs

 

 

 

3. is null

null: 아직 정의되지 않았거나 미확인 값을 의미

(※ 0 또는 공백과는 전혀 다른 개념)

 

ex)  PROFESSOR 테이블에서 아직 급여가 정해지지 않은(null) 교수의 교수 번호와 이름 출력

1
2
3
 select profno, name
 from PROFESSOR
 where sal is null;
cs

 

ex) 반대로 급여가 정해져 입력되어 있는 교수의 교수 번호와 이름 출력

1
2
3
select profno, name
from PROFESSOR
where sal is not null;
cs

 

 

 

4. nvl

null과 다른 값의 연산 결과는 null이 된다. 예를 들어 두 칼럼을 더할 때 둘 중 하나의 행이 null인 경우 더한 결과도 null로 출력된다. 따라서 null 이 있는 칼럼과 연산할 경우 nvl을 활용하여 null이 0으로 출력되도록 조정할 수 있다.

ex) sal 칼럼이 null이면 sal이 0으로 출력

1
nvl(sal, 0)
cs 

 

ex) PROFESSOR 테이블에서 이름, 급여(sal)와 수당(comm)을 더한 '급여' 칼럼을 출력(단, comm이 null일 경우 0으로 계산) 

1
2
select name, sal + nvl(comm, 0) as 급여
from PROFESSOR;
cs

 

 

 

[오라클(Oracle) 기초]   in / like / is null / nvl을 이용한 조건 검색

-요약-

 

1. IN 연산자

- in(a, b, c, ...) : a, b, c, .... 중 하나라도 일치하면 참

- not in : 일치하지 않으면 참

2. like 연산자

- % : 모든 문자  /  언더바(_) : 하나의 문자

- 문자열의 일부를 검색하여 조회 (ex. 이름 첫 글자가 '김'인 경우 : '김%' or '김__')

3. is null

- 아직 정의되지 않았거나 미확인 값

- 조건 검색할 때 in null 사용(ex. where sal is null)

4. nvl

-null인 경우 다른 값으로 출력

-ex)  nvl(sal, 0)  :  sal 칼럼이 null이면 sal이 0으로 출력

댓글