크리스의 개발일기

[SQL] WHERE절 1=1, 1=0 의미 본문

Database/SQL

[SQL] WHERE절 1=1, 1=0 의미

ChrisJang 2020. 11. 10. 11:09

1. AND 구문에서는 WHERE 1 = 1 

만약에 'WHERE 1=1'이 없다면 if 조건절 안에 WHERE를 넣어야 할지 AND를 넣어야할지 혼란스럽다.

그러나 'WHERE 1 = 1'을 사용하면 아래 조건절에 AND를 넣어주면된다

 

SELECT *
	  FROM skybar
 	 WHERE 1 = 1
	 #if(!$room.equals(''))
		AND room = '$room'
	 #end
	 #if(!$alco.equals(''))
		AND alco = '$alco'
	 #end

 

 

왜 WHERE 1=1??

① 쿼리 디버깅 시, 주석처리가 편하다.
아래와 같은 쿼리가 있다고 가정하자

 

위와 같은 커리문에서 잠시 CUSTOMERID = '3'에 주석 처리할때

 

위와 같은 경우처럼 두번의 주석을 사용해야하는 번거로움이 발생한다.

 

그러나 WHERE 1=1을 이용하여 보다 편리하게 쿼리 작성이 가능한다

 

② 동적쿼리에서 특정상황마다 WHERE절을 다르게 작성해줘야 할때 편리하다.

 

query1 = "SELECT * FROM CUSTOMER "

if(!cusotmerID.equals("") {
	query2 = "WHERE CUSTOMERID = '" + customerID + "'"
}
if(!companyName.equals("") {
	if(!customerId.equals("") {
    	query3 = "AND"
    } else {
    	query3 = "WHERE"
    }
	query4 = "COMPANAYNAME = '" + companayname + "'"
}

 

위의 커리를 보다 간단하게 쓸수있다.

 

query1 = "SELECT * FROM CUSTOMER WHERE 1=1 "

if(!cusotmerID.equals("") {
	query2 = "AND CUSTOMERID = '" + customerID + "'"
}
if(!companyName.equals("") {
	query2 = "AND COMPANYNAME = '" + companyName + "'"
}

 

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

 

출처 : 

hyjykelly.tistory.com/5

zzznara2.tistory.com/96

hyjykelly.tistory.com/5

Comments