본문 바로가기
Database/DB

[SQL] WHERE 1=1 하는 이유

by 댓츠굿 2014. 4. 7.


WHERE 1=1 하는 이유



적으로 조건절을 붙일 수 있다는 점과, 불완전한 SQL문을 방지하고자 쓴다.


아래는 USER 테이블에서 활성화된 여성 고객을 찾고자 하는 쿼리 예제이다.


SELECT * FROM USER WHERE <if test="activeYn != null and activeYn != ''"> activeYn = #{activeYn} </if> AND gender = 'F'

만약 WHERE절에 if 구문을 넣었는데 activeYn 파라미터가 빈 값으로 넘어온다면 어떤 일이 벌어질까? 아마도 다음과 같은 SQL이 만들어질 것이다.


SELECT * FROM USER WHERE

AND gender = 'F'

불완전한 SQL문이 만들어졌다.

이 때문에 사전에 에러를 방지하고자 아래처럼 WHERE 1=1을 하는 이유도 있을 것이다.


SELECT * FROM USER WHERE 1=1 <if test="activeYn != null and activeYn != ''"> AND activeYn = #{activeYn} </if> AND gender = 'F'


참고로, 1=1은 항상 참이기 때문에 쿼리 결과에 영향을 주지 않는다.

또한 1=2 도 사용할 수 있다. 항상 False 이기 때문에 임시적으로 조회가 불가능 하도록 할 때 사용할 수 있다.



반응형