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 |
Tags
- 이것이리눅스다
- 이클립스
- VMware
- 중첩쿼리
- JavaScript
- 오류
- monthPicker
- 주민번호마스킹
- 사용자변경
- 자바기초스터디
- CentOS8
- Python
- 서울에어비앤비
- 서울복층에어비앤비
- 남산타워뷰
- 8kyu
- class파일바로보기
- SQL
- Linux
- https
- Oralce
- 멀티쓰레드프로그래밍
- CentOS
- 시즌1
- Codewars
- java
- 7kyu
- 파이썬
- Eclipse
- 6kyu
Archives
- Today
- Total
보통사람
[SQL] 1=1 구문, 1=0 구문을사용하는 이유 본문
개발을 하다 보면 1=1 구문을 흔하게 볼 수 있는데 오늘 1=0 구문을 처음 보게 되어 해당 내용을 정리해보고자 합니다.
1. 1=1 구문
보통 WHERE 1=1 구문을 사용하는 이유는 2가지입니다.
-
이유 없이 그냥
-
동적 쿼리 사용 시
사람마다 개발하는 스타일이 다르기 때문에 딱히 어떤 것이 옳다고 할 수는 없으며 2번의 경우에 사용하는 것이 맞으나 1번의 경우에도 사용한다는 것을 알고만 있자. 또한 WHERE 1=1 구문과 비슷한 것으로 WHERE NULL IS NULL 구문이 있습니다.
SELECT * FROM TEMP
WHERE 1=1
<if test="조건문">
AND 조건문
</if>
-- 예시1) 조건문이 없는 경우
SELECT * FROM TEMP
WHERE 1=1
-- 예시2) 조건문이 있는는 경우
SELECT * FROM TEMP
WHERE 1=1
AND 조건문
2. 1=0 구문
WHERE 1=0 구문은 OR절과 함께 사용합니다. 그러나 아래의 쿼리문에서 좀 다르게 사용됩니다.
A테이블과 B테이블에서 데이터를 가져오는 데 B테이블에는 AGE컬럼이 없다고 가정해보죠.
물론 B테이블에서 AGE컬럼에 관한 if문을 안 하는 게 최선의 방법이지만 이렇게 처리할 수 도 있다는 것만 알아두면 됩니다.
-- #{age} 값이 있으면 테이블B에 대한 쿼리문은 실행되지 않음
SELECT NAME FROM A
WHERE 1=1
<if test="name != null and name != ''">
AND NAME LIKE #{name} || '%'
</if>
<if test="age != null and age != ''">
AND AGE = #{age}
</if>
UNION ALL
SELECT NAME FROM B
WHERE 1=1
<if test="name != null and name != ''">
AND NAME LIKE #{name} || '%'
</if>
<if test="age != null and age != ''">
AND 1=0 -- 테이블 B는 AGE 컬럼이 없음
</if>
'정리' 카테고리의 다른 글
[SQL] MyBaits 문자열 비교 (0) | 2019.10.03 |
---|---|
[SQL] 주민번호 마스킹 처리 (0) | 2019.09.29 |
[Eclipse] 이클립스에 Log4j(1.x) 추가 (0) | 2019.08.11 |
[Eclipse] 이클립스에 JUnit 추가 (0) | 2019.08.10 |
[SQL] 서브 쿼리(Subquery) 위치에 따른 명칭 (0) | 2019.07.19 |