WHERE 1=1
WHERE 1=1 정리하기 위해 작성한 내용이다.
상황 설명
프로젝트를 하다가 기존에 작성된 SP를 확인하다가,
“Where 1=1”라고 작성된 부분을 발견했다.
왜 사용하는가?
WHERE 1=1 은 언제나 ‘참’이라는 뜻이다.
뒤에 어떠한 조건구문이든 1=1 은 언제나 참이기 때문에
AND 를 붙여가며 조건구문을 붙일 수 있다.
주로 SP에서 동적으로 변하는 인자 값들에 따라
조건식을 사용하는 SQL 문이 필요할 때 사용했다.
기존에 사용하던 테이블을 이용해
SQL문을 출력하는 SP를 만들어 보았다.
@UserName과 @UserId을 인자로 받아서
가변적이게 SQL문의 뒤에 AND 이후의 조건들이 붙는다.
그리고 출력을 하는 예시이다.
추가로
주로 조건에 의해 검색하는 Select문의 SP를 생성할 때
사용하는구나 하고, 궁금해서 더 찾아보니
Update와 Delete문에 사용할 때는 다들 주의한다고 한다.
왜 “주의”해야하는가?
Update 또는 Delete에서
“아무런 예외 처리가 없다는 가정”으로
NULL을 받는 WHERE 1=1을 사용하면 다음처럼 된다.
예시로는 Select문을 사용했지만
조건이 모두 참인 SQL이 Print 되는것을 볼 수 있다.
Update나 Delete를 사용한다면
모두가 삭제되거나 모두가 갱신되는 모습을 볼 수 있다.
“다시한번 느끼는 예외 처리의 중요성”