[Oracle|오라클] 조건문에 1=1 사용하는 이유 (WHERE, 동적쿼리)

오라클 조건문에 WHERE 1=1 사용하는 이유

 

쿼리를 분석하다 보면 조건문에 의미없는 조건(1=1)이 코딩되어 있는 경우가 있다.

과거 시스템을 마이그레이션 할 때 포함 되었거나 의미를 몰라서 사용한 경우라고 생각한다.

 

동적쿼리에서 if문을 사용하여 조건을 유동적으로 바꾸고 싶을때 WHERE 1=1 으로 첫 조건을 선언 후

AND 조건을 유동으로 바꾸어도 WHERE이라는 구문은 신경쓰지 않아도 된다.

 

동적 쿼리문이라도 첫 WHERE 조건이 명확하다면 1=1을 사용하지 않고 첫번째 조건의 컬럼을 사용하면 된다.

 

 

일반 쿼리문 작성 시 WHERE 조건에 1=1는 무의미 하다. 사용하지 말것.

 

동적 쿼리문을 작성 시 첫번째 조건 WHERE 구문에 어떤 조건이 해당될지 불명확할 때는

WHERE 조건줄을 1=1로 작성 후 조건에 맞는 if문에 해당되면 조건이 만들어 진다.

 

입사일(HIREDATE) 조건이 첫번째 조건이 된다면 아래와 같이 된다.

 

직업(JOB) 조건이 첫번째 조건이 된다면 아래와 같이 된다.

어떠한 컬럼이 첫번째 조건이 되어도 조건이 만들어 진다. (WHERE JOB = '값' 으로 하지 않아도 됨)

 

동적 쿼리문이라도 첫번째 조건이 정해져 있으면 1=1 조건을 사용하지 말자.

아래 쿼리는 입사일(HIREDATE) 기준으로 직업과 매니저로 조회하는 쿼리.

 

댓글

Designed by JB FACTORY