STUDY/DBMS
[SQL] WHERE 1=1을 사용하는 이유
nnh
2023. 2. 22. 11:12
728x90
WHERE 1=1은 조건문에서 항상 참을 의미한다.
AND 조건을 자유자재로 넣고 빼기 위해 사용한다.
간단한 예제를 통해 살펴보자.
SELECT *
FROM User
WHERE userName LIKE '김%'
AND userRole = 1;
위 쿼리문의 두가지 조건 중 userName LIKE '김%' 조건을 주석처리하고자 할 때
SELECT *
FROM User
-- WHERE userName LIKE '김%'
AND userRole = 1;
위와 같이 WHERE 명령어까지 주석처리하면 오류가 발생한다.
SELECT *
FROM User
-- WHERE userName LIKE '김%'
WHERE userRole = 1;
그렇다면 위의 쿼리문처럼 원하는 조건을 주석 처리하고 AND를 WHERE로 바꿔주어야 하는데
조건이 한두개라면 귀찮음을 감수하고 일일이 바꿔도 되지만, 조건이 무수히 많다면 번거로운 일이 될것이다.
이때 WHERE 1=1 조건을 사용하면 보다 쉽게 주석을 처리할 수 있고, 디버깅도 수월해진다.
즉, 동적으로 SQL툴에서 쿼리를 작성할 때 유용하다.
SELECT *
FROM User
WHERE 1=1
-- AND userName LIKE '김%'
AND userRole = 1;
위 코드처럼 WHERE 1=1을 선언하면 명령어를 별도로 변경할 필요없이 AND로 연결된 조건들 중 원하는 조건을 주석 처리할 수 있다.
SELECT *
FROM User
<WHERE>
<if test="userName != null and userName != ''">
AND userName LIKE '김%'
</if>
<if test="userRole != null and userRole != ''">
AND userRole = 1;
</if>
</WHERE>
MyBatis에서는 <where> 태그로 조건을 처리할 수 있는데, 위 쿼리문처럼 <where> 태그 내부에서 조건태그 <if>를 사용한다면 MyBatis에서 자동으로 질의 조건에 따라 WHERE 조건을 생성하거나 생략한다.
참고)
[MYSQL] WHERE 1=1 사용하는 이유?? 주의사항으로는??
안녕하세요, 오늘은 MYSQL 질의문에서 WHERE 1=1을 사용하는 이유에 대해서 알아보도록 하겠습니다. 다른 개발자가 개발한 프로젝트를 유지 보수하거나, 처음 개발자로 입문하여 선임들이 작성한
ssd0908.tistory.com
728x90