프로젝트를 진행할 때 SQL 쿼리를 작성하다보면 'WHERE 1 = 1' 이라는 것을 자주 보게 됩니다. 사실, 의미없이 'WHERE 1 = 1'이라는 구문을 사용하시는 분들이 있어서 깔끔한 걸 추구하는 저로서는 가끔 1 = 1 이라는 부분을 지워버리는데요. 이것을 잘 사용하면 조건절(WHERE)을 편리하게 사용할 수 있어서 편리합니다.
사용법에 대해 간단하게 알아보겠습니다.
1. AND 구문에서는 WHERE 1 = 1 사용하자.
만약에, 'WHERE 1=1'이 없다면 if 조건절 안에 WHERE를 넣어야 할지 AND를 넣어야할지 알 수 없습니다.
'WHERE 1 = 1'을 사용하게 되면 아래 조건절에 무조건 AND를 넣으면 되는 겁니다.
SELECT * FROM NAME_LIST WHERE 1 = 1 #if(!$name.equals('')) AND NAME = '$name' #end #if(!$age.equals('')) AND AGE = '$age' #end
2. OR 구문에서는 WHERE 1 = 0을 사용하자.
위 1번과는 달리 OR 구문에서는 WHERE 1 = 0을 사용해야 합니다.
결과값이 아무것도 없는 상태에서 OR 구문으로 결과를 하나씩 하나씩 추가해 나가야 하니까요.
SELECT * FROM NAME_LIST WHERE 1 = 0 #if(!$name.equals('')) OR NAME = '$name' #end #if(!$age.equals('')) OR AGE = '$age' #end
사실 알고보면 별거 아닌 간단한 기능이지만, 이걸 모르면 WHERE절 밑의 IF절이 복잡해지게 되는거죠.
#if where name = '$name' #end
#if and name = '$name' #end
이 둘 중에 무엇을 써야할지 일일이 조건을 따져서 코딩을 하게 되면 코딩이 길어지게 됩니다.
사실, 꼼수로서는 실전에서 굉장히 유용하게 잘 사용되는 방법입니다.
'프로그래밍 언어 > 쿼리문 + Oracle + MySQL' 카테고리의 다른 글
[오라클/쿼리문] Oracle에서 세자리 콤마 찍기 (0) | 2015.03.25 |
---|---|
[쿼리문] Merge into를 이용해서 insert나 update를 자동으로 실행하자. (0) | 2015.02.04 |
[쿼리문/오라클] Oracle에서 중복 조인을 피하기 위한 Update 방법 (MERGE 사용) (0) | 2011.04.01 |
단일행을 다중 row로 분리, 다중 row 결과를 단일행으로 연결하는 방법 (0) | 2011.03.14 |
[Oracle] 오라클에서 WITH문으로 쿼리를 임시테이블이나 View처럼 사용하자. (5) | 2011.03.03 |
댓글