티스토리 뷰

출처 : 데브피아 (http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=38&MAEULNo=16&no=62792&ref=62791)
-> 최문산 (zenstyle11) 님의 질문에 대한 이영민 (andy5) 님의 답변입니다.



[ 1=1 은 항상 참인 조건입니다. ]

저는 이 조건을 Delphi, Java Swing, C# WinForm 등의 App를 개발할때 Query 문장을 특정 조건에 맞게 조합하고자 할때 사용했습니다.

예를 들어서, 고객등급 조건을 사용자가 선택한 경우에는 고객 등급 조건을 where절에 추가하고,
가입일자 조건을 선택하면 가입일자 조건을 추가하려고 할때,
이미 조건이 추가 되어 있는지를 검사해서 'and' 를 앞에 붙일지 말지를 결정해야 합니다.

이런 조건들이 상당수 있을 경우 if 문이 상당히 지저분하고 가독성이 떨어집니다.
그래서 아예 where 1=1 처럼 항상 참인 조건으로 초기화합니다.
그러면, 그 다음에 오는 조건들은 그냥 and를 앞에 붙여주기만 하면 되니까요~

T-SQL에서 동적쿼리를 사용하는 경우도 마찬가지입니다.
where 절 구성하기에 좀 더 편리한 방법이라고 생각합니다.

별로 필요 없어 보이지만, 나름대로 이유가 있습니다

 ps.
where 1=1 은 where 2=2 와 동일합니다. ^^
일종의 관습처럼 굳어진 버릇인것 같아요~


-----------------------------------------------

즉, 여러 조건에 대한 AND문을 WHERE절에 사용할 때 이미 AND문이 사용되었는지 아닌지를 판별하여 AND를 먼저 쓰고 조건을 쓸지 아닐지 결정해야 하는 경우에,

where 1=1 을 먼저 쓰고 시작한다면 그런걸 결정하지 않고 그냥 'and 조건' 을 사용하면 되겠죠. 1=1 은 무조건 참이니까요.

만일 그게 없다면
if (조건이 이미 존재 할 경우) 'and 붙임'
else 'and 안붙임'

뭐 위와같은 조건문이 붙어 내용이 길어지고 위에 설명하셨듯이 가독성이 떨어지겠죠.

전 오늘 where 1=1 의 기능 하나 알았습니다~ 오예~

댓글