Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Java의정석
- Numpy
- 시큐어코딩
- DispatcherServlet
- 김영한
- Secure Coding
- 불친절한 SQL 프로그래밍
- docker
- JPA
- Python
- 분석함수
- 스프링 핵심원리
- 자바공부
- 서블릿
- 스프링MVC
- java
- 스프링
- 스프링입문
- 이것이자바다
- 불친절한SQL프로그래밍
- 스프링 부트와 JPA
- 계층 쿼리
- REGEXP_SUBSTR
- Spring
- 제네릭
- 자바연습문제
- 자바의정석 연습문제
- 인프런
- inflearn
- 자바의정석
Archives
- Today
- Total
Continuous Challenge
[불친절한 SQL 프로그래밍] [7장] WHERE절 - 7.4 IN조건 본문
728x90
728x90
IN조건은 expr의 목록과 일치하거나 일치하지 않는 행을 반환한다.
expr [NOT] IN (expr [,expr])
IN조건은 널이 입력되어도 결과가 반환된다.
위 쿼리는
SELECT ename, mgr FROM emp WHERE mgr = 7839 OR mgr = NULL;
의 쿼리로 해석된다.
mgr = NULL 조건은 UNKNOWN으로 평가되고, OR 조건은 조건이 하나라도 TRUE이면 TRUE이므로 mgr = NULL 조건이 무시된다.
NOT IN 조건의 expr에 널이 입력되면 결과가 반환되지 않는다.
IN 조건을 아래와 같은 방식으로 사용할 수도 있다.
위 쿼리는
SELECT ename, empno, mgr FROM emp WHERE (empno = 7839 OR mgr = 7839);
의 쿼리로 해석된다.
구문이 다소 길어지더라도 이와 같이 가독성 높은 쿼리를 작성하는 편이 바람직하다.
- IN 조건은 목록을 1000개까지만 지정할 수 있는 제약이 있다.
SELECT * FROM emp WHERE (1, deptno) IN ((1,1), ... (1,1001));
하지만 위와 같이 다중 열을 사용하면 1000개 이상의 목록을 지정할 수 있다. 다중 열에서 첫 번째 원소값인 1은 항상 같은 값이기 때문에 무시된다.
728x90
728x90
'Study > 불친절한 SQL 프로그래밍' 카테고리의 다른 글
[불친절한 SQL 프로그래밍] [10장] GROUP BY절과 HAVING절 - 10.2 GROUP BY 절의 확장 기능(ROLL UP, CUBE, GROUPING SETS) (0) | 2019.12.03 |
---|---|
[불친절한 SQL 프로그래밍] [7장] WHERE절 - 7.6 널 조건 (LNNVL 함수) (0) | 2019.11.29 |
[불친절한 SQL 프로그래밍] [6장] 단일 행 함수 - 6.6 비교 함수 (LEAST / GREATEST) (0) | 2019.11.26 |
[불친절한 SQL 프로그래밍][6장] 단일 행 함수 - 6.5 널 관련 함수 (0) | 2019.11.26 |
[불친절한 SQL 프로그래밍][6장] 단일 행 함수 - 6.4 변환 함수 (0) | 2019.11.26 |
Comments