데이터베이스

LIKE 연산자와 NULL

22gamin 2023. 4. 28. 13:43
  • 사용목적

- 정확한 일치가 아닌 패턴에 만족하는 행 찾기

 

  • 사용예시

- 이름이 '홍'으로 시작하는 데이터 찾기

- 아이디에 ' - ' 이 포함된 데이터 찾기

 

  • 사용방법

- 조건을 'where절'에 전달하여 해당 조건에 맞는 행을 선택하는 용도이다.

- LIKE와 함께 패턴을 완성하는 두 기호를 사용한다.

- %: 글자수 제한 없는 "모든"의 의미

- _(underscore) : 하나당 한 글자의 "모든"의 의미

 

  • LIKE 연산자를 이용한 예제

1) 이름이 A로 시작하는 직원 모두를 출력하라

-> name LIKE 'A%'

~> %는 모든이라는 의미이며 글자수 제한이 없다.

 

2) 이름이 A로 시작하는 4자리인 직원 모두를 출력하라

-> 'name LIKE 'A___'     (underscore를 3개)

 

3) 중간에 이름이 O가 포함된 직원을 모두 출력하라

-> 'name LIKE '%O%'

 

4) 이름이 E로 끝나는 직원 모두를 출력하라

-> 'name LIKE '%E'

 

5) 두번째 이름이 E인 직원 모두를 출력하라

-> 'name LIKE '_E%'

 

 

  • 문제1!!
  • professor 테이블의 교수 id에 ' - ' 기호가 포함된 교수의 이름, id, position을 출력하라.

=> select name, id, position

     from professor

     where id like '%-%';

 

  • 문제2!!
  • 학생 테이블에서 여학생의 이름, 주민번호, 학년 정보를 출력하라.

~> 여학생이면 주민번호 7번째 자리가 2인 것을 이용한다.

~> 앞의 6자리는 고정이므로 _을 6번 넣기!

=> select name, jumin, grade

     from student

     where jumin like '______2%';

 

 

 

 

  • IS NULL/ IS NOT 연산자

- NULL

- 0 또는 space 값과는 다른, 아직 지정되지 않은 상태의 데이터이다.

ex) BONUS = null  -> 아직 보너스가 정의되지 않았다.

                               -> "보너스가 없다,", "0이다" 라고 해석하면 안됨.

- NULL을 포함한 산술 연산의 결과 NULL 리턴한다,

-> NULL을 포함한 연산에 주의한다!!!

- NULL을 포함한 데이터의 조건은 IS NULL/ IS NOT NULL로 전달한다.