본문 바로가기

Database

[Oracle] SELECT문 LIKE, NOT, IS NOT NULL 연산자

 

NOT 연산자

-> NOT, <>, ^=, !=  연산자를 통해 부정을 나타낸다.

->SELECT department_id, department_name FROM departments WHERE NOT department_id = 10;
->SELECT department_id, department_name FROM departments WHERE department_id <> 10;
->SELECT department_id, department_name FROM departments WHERE department_id ^= 10;
->SELECT department_id, department_name FROM departments WHERE department_id != 10;



IS NOT NULL 연산자

-> NULL이 아닌 데이터를 검색한다.


-> SELECT employee_id, last_name, commission_pct FROM employees WHERE commission_pct IS NOT NULL;



LIKE 연산자(검색)


-> '김%' => '김'으로 시작하는 모든 문자열  예)김길동, 김밥...
-> '%과' => '과'로 끝나는 모든 문자열         예)인사과, 화학과...
-> '%김%' => '김'이란 문자를 포함하는 모든 문자열 예)김씨, 돌김,참치김밥....
-> '_등_' => '등'이 가운데 들어간 3글자 문자열 예)고등어, 꽃등심, 삼등분

07년도에 입사한 사원 목록을 출력
-> SELECT employee_id, last_name, hire_date FROM employees WHERE hire_date BETWEEN '07/01/01' AND '07/12/31';

->SELECT employee_id, last_name, hire_date FROM employees WHERE hire_date LIKE '07%'; 

 

last_name에 'a'가 포함되지 않는 사원을 출력
->SELECT last_name FROM employees WHERE last_name NOT LIKE '%a%';


 

예시



화학과 학생 중에 성이 '관'씨인 학생을 검색
-SELECT major, sname FROM student WHERE major='화학' AND sname LIKE '관%'

 


부임일이 1995년 이전의 정교수를 검색

-SELECT * FROM professor WHERE orders = '정교수' AND LIKE hiredate < '1995/1/1';

 

성과 이름이 각각  1글자인 교수를 검색 (이름이 2자)
-SELECT pname FROM professor WHERE pname LIKE '__';


화학과 학생 중에 4.5환산 학점이 3.5이상인 학생을 검색 
-SELECT major, sname, avr*4.5/4.0 FROM student WHERE major in('화학') AND avr >3.5;


화학과 이외 학과 학생의 평점을 각 학과별 그리고 학년별 순서로 출력
-SELECT * FROM student WHERE NOT major IN('화학') ORDER BY major, syear;