Oracle 논리 연산자 OR

Oracle DB

논리 연산자 OR

복수의 조건식의 논리합산 연산자. 복수의 조건식 중 하나만이라도 해당할 경우, TRUE를 반환합니다. 다시 말해 WHERE구에 들어가는 조건을 2개 이상 가졌으며, 둘 중 하나의 조건식만 만족해도 결과로 출력하는 SQL문입니다.

이 글의 예시는 아래 글의 초기 데이터를 사용했습니다.

Oracle 일반 데이터베이스 인스턴스에 연습 데이터용 샘플 스키마 "SCOTT" 작성하기
"SCOTT" 스키마가 디폴트로 설치된 마지막 오라클 버전은 11g(11.2.0.x) 입니다. 11g 버전 이후 Oracle 12c(12.1.0.2) 버전부터 "SCOTT" 스키마는 기본적으로 설치되지 않도록 변경되...

예시1

두 개의 조건식을 가진 SQL문입니다. 테이블 emp의 컬럼 sal의 값이 800이거나 comm의 값이 500인 레코드를 출력합니다.

COLUMN empno FORMAT 99999;
COLUMN ename FORMAT A6;
COLUMN sal FORMAT 9999;
COLUMN comm FORMAT 9999;
SELECT empno, ename, sal, comm FROM emp
WHERE sal = 800 OR comm = 500;

실행 결과는 다음과 같습니다. 논리연산자 OR가 사용되었기 때문에 sal이 800이지만 comm이 500이 아닌 레코드, comm이 500이지만 sal이 800이 아닌 레코드가 모두 출력됩니다.

 EMPNO ENAME    SAL  COMM
------ ------ ----- -----
  7369 SMITH    800
  7521 WARD    1250   500

예시2

비교연산자 BETWEEN, IN, LIKE, IS NULL 조건을 모두 만족하는 데이터를 검색하는 SQL문입니다. 테이블 emp의 컬럼 empno, ename, comm, mgr에 대한 조건식이 정의되어있습니다.

COLUMN empno FORMAT 99999;
COLUMN ename FORMAT A6;
COLUMN comm FORMAT 9999;
COLUMN mgr FORMAT 9999;
SELECT empno, ename, mgr, comm FROM emp
WHERE empno BETWEEN 7300 AND 7500
OR comm IN(300, 1400)
OR ename LIKE '%N'
OR mgr IS NULL;

실행 결과는 다음과 같습니다. emno가 7300 이상 7500 이하인 레코드, comm이 300 혹은 1400인 레코드, ename에 N이 포함된 레코드, mgr이 null인 레코드들이 모두 결과값으로 검색되어 총 4건이 출력되었습니다. WHERE문에 명시된 조건 전체를 만족하지 않는 레코드도 결과값이 됨을 알 수 있습니다.

 EMPNO ENAME    MGR  COMM
------ ------ ----- -----
  7369 SMITH   7902
  7499 ALLEN   7698   300
  7654 MARTIN  7698  1400
  7839 KING
タイトルとURLをコピーしました