ENFJ 비전공자 개발스터디
오라클 데이터베이스 Oracle Database 표현식 CASE WHEN THEN 조건식 IN, ANY, SOME, ALL, EXISTS, LIKE, BETWEEN 본문
오라클 데이터베이스 Oracle Database 표현식 CASE WHEN THEN 조건식 IN, ANY, SOME, ALL, EXISTS, LIKE, BETWEEN
madb 2021. 12. 28. 10:13오라클 데이터베이스 Oracle Database 표현식
하나이상의 값과 연산자, 함수들이 결합된 식
CASE WHEN THEN
특정 조건에 따라 값을 변경할 수 있는 수식(표현식)
주로 SELECT절에서 사용
문제 : 급여 < 5000 => C 등급, 5000 <= 급여 < 15000 =>B등급
-- 급여 >= 15000 => A등급
-- 급여 : employees.salary 사원번호 : employees.employee_id
-- 사원번호, 급여
SELECT *
FROM (
SELECT e.EMPLOYEE_ID
, e.SALARY
, CASE WHEN e.SALARY <= 5000 THEN 'C등급'
WHEN e.SALARY > 5000 AND e.SALARY <= 15000 THEN 'B등급'
ELSE 'A등급'
END AS salary_grade
-- AND salary_grade ='A등급';
FROM EMPLOYEES e
)
WHERE salary_grade ='A등급'
;
100 24000 A등급
101 17000 A등급
102 17000 A등급
오라클 데이터베이스 Oracle Database 조건식
하나 이상의 표현식과 관계 연산자(논리 연산자)가 결합된 식
연산자는 논리연산자, 관계 연산자, 기타 연산자
(IN, ANY, SOME, ALL, EXISTS, LIKE, BETWEEN)
비교조건식
ANY의 단어 뜻 중 '아무거나 하나'라는 뜻을 생각하면 편하다.
다수의 비교값 중 한개라도 만족하면 true 이다.
ANY는 OR조건으로 바꾸어 표현할 수도 있다
● ANY 조건 예시 (만족하는 값 하나만 있으면 됨)
조건 | 결과 | 설명 |
1000 > ANY (500, 1000, 2000) | TRUE | ANY 값에 1000 보다 작은 500이 있으므로 TRUE |
1000 = ANY (500, 1000, 2000) | TRUE | ANY 값에 같은 값 1000이 있으므로 TRUE |
2000 < ANY (500, 1000, 2000) | FALSE | ANY 값에 2000 보다 큰 값이 없으므로 FALSE |
= ANY | 하나라도 만족하는 값이 있으면 결과를 리턴 (IN과 동일) |
> ANY | 값들 중 최소값 보다 크면 결과를 리턴 |
>= ANY | 값들 중 최소값 보다 크거나 같으면 결과를 리턴 |
< ANY | 값들 중 최대값 보다 작으면 결과를 리턴 |
<= ANY | 값들 중 최대값 보다 작거나 같으면 결과를 리턴 |
<> ANY | 모든 값들 중 다른 값만 리턴 (값이 하나일 때만 가능, 사용X) |
ALL은 ANY와 반대이다.
모든 조건을 만족해야만 한다.
전체 값을 비교하여 모두 만족해야만 true 이다.
ALL은 나올 수 있는 모든 조건에 AND 연산을 수행한것과 동일한 결과를 얻는다.
● ALL 조건 예시 (모든 값을 만족해야 함)
조건 | 결과 | 설명 |
1000 > ALL (500, 1000, 2000) | FALSE | 1000이 ALL의 모든 값 보다 커야하므로 FALSE |
1000 = ALL (500, 1000, 2000) | FALSE | 1000이 ALL의 모든 값과 동일해야 하므로 FALSE |
3000 > ALL (500, 1000, 2000) | TRUE | 3000은 ALL의 모든 값 보다 크므로 TRUE |
> ALL | 값들 중 최대값 보다 크면 결과를 리턴 |
>= ALL | 값들 중 최대값 보다 크거나 같으면 결과를 리턴 |
< ALL | 값들 중 최소값 보다 작으면 결과를 리턴 |
<= ALL | 값들 중 최소값 보다 작거나 같으면 결과를 리턴 |
= ALL | 모든 값들과 같아야 결과를 리턴 (값이 하나일 때만 가능, 사용X) |
<> ALL | 모든 값들과 다르면 결과를 리턴 |
논리조건식
AND는 모든 조건을 만족하는 경우에만 TRUE를 반환하고,
OR는 하나라도 만족하면 TRUE를 반환한다.
NOT은 조건식의 결과가 거짓일 때, TRUE를 반환한다.
NULL조건식
특정 값이 NULL인지 아닌지 판단하는 조건식
앞에 IS를 붙여서 사용한다. (ex WHERE employee_name IS NULL)
BETWEEN AND 조건식
범위에 해당되는 값을 찾을 때 사용하는데 크거나 같고 작거나 같은 값을 찾는다.
따라서 ‘>=’와 ‘<=’ 논리 연산자로 변환이 가능하다.
IN 조건식
조건절에 명시한 값이 포함된 건을 반환
IN 역시 OR 조건으로 변환이 가능하며 ‘=ANY’형태로 바꿔 쓸 수 있다.
다만 ANY는 등호 연산자 뿐만 아니라 ‘>’, ‘>=’, ‘<’, ‘<=’, ‘< >’, ‘!=’ 등의 비교 연산자도 사용할 수 있다는 점이 다르다.
EXISTS 조건식
후행 조건절로 값의 리스트가 아닌 서브 쿼리만 올 수 있다
서브 쿼리 내에서 조인 조건(a.department_id = b.department_id)이 있어야 한다.
LIKE 조건식
문자열을 검색할 때 사용하는 조건식이다.
논리 조건식과 같은 완전 일치가 아닌, 패턴 검색이 가능하다.
'%'라는 와일드카드를 사용하여 패턴 검색을 진행한다.
'Database' 카테고리의 다른 글
오라클 Oracle SQL 함수 문자 함수 (0) | 2021.12.28 |
---|---|
오라클 Oracle SQL 함수 숫자 함수 (0) | 2021.12.28 |
오라클 데이터베이스 Oracle Database 뷰 인덱스 시노님 시퀀스 파티션 view index synonym sequence partition (0) | 2021.12.23 |
오라클 데이터베이스 Oracle Database SQL Reference (0) | 2021.12.23 |
데이터베이스 객체의 종류 (0) | 2021.12.23 |