[SQL] IN, ANY, ALL


1. IN

- 조건절에서 사용하며 다수의 비교값과 비교하여 비교값 중 하나라도 같은 값이 있다면 true 이다.
SELECT * FROM emp WHERE sal IN(950, 3000, 1250);
- 950, 3000, 1250 과 동일한 값은 모두 출력한다.

2. ANY
- 다수의 비교값 중 한개라도 만족하면 true 이다.
- IN  과 다른점은 비교 연산자를 사용한다는 점이다.
SELECT * FROM emp WHERE sal = ANY(950, 3000, 1250)
- 이 문장은 위의 IN의 결과와 같다. "=" 연산자는 비교 값과 같은 값은 모두 출력하게 된다.
SELECT * FROM emp WHERE sal > ANY(950, 3000, 1250)
- 이 문장은 ">"연산자를 사용했다. 이 쿼리의 결과는 950보다 큰 값은 모두 출력하게 된다.
SELECT * FROM emp WHERE sal < ANY(950, 3000, 1250)
- 이 문장은 "<" 연산자를 사용했다. 이 쿼리의 결과는 3000보다 작은 값은 모두 출력하게 된다.

3. ALL
- 전체 값을 비교하여 모두 만족해야만 true 이다.

SELECT * FROM emp WHERE sal = ALL(950, 3000, 1250)
- 결과가 하나도 없다. 하나의 값이 모든 값과 일치 할 수 없기 때문이다.
- 'sal = 950 AND sal = 3000 AND sal = 1250'

SELECT * FROM emp WHERE sal > ALL(950, 3000, 1250)

- 3000보다 큰 값만 표시된다. 'sal > 950 AND sal > 3000 AND sal > 1250' 과 동일하다.
SELECT * FROM emp WHERE sal < ALL(950, 3000, 1250)
- 950보다 작은 값만 표시된다. 'sal < 950 AND sal < 3000 AND sal < 1250' 과 동일하다.
















%

'Oracle > PL/SQL' 카테고리의 다른 글

[SQL] Null 주의 사항  (0) 2011.10.07
[SQL] ALTER TABLE  (0) 2011.09.27
Oracle date format  (2) 2011.05.02
oracle에 date type 으로 넣고 싶은 날짜+시간을 java에서 넣기.  (0) 2011.05.02
DML 을 할 수 있는 FUNCTION 생성하기.  (0) 2010.10.09