시니어 개발자 코드를 보다가 MyBatis Mapper.xml 쿼리에 WHERE 1=1로 적힌 것을 보고 궁금해져서 찾아보았다.
나는 평소에 WHERE TRUE를 사용했는데 WHERE 1=1로 쓰는 것과 차이가 없을 것이라 생각했다.
SQL에서 WHERE 1=1과 WHERE TRUE는 모두 항상 참(true)을 반환하는 조건이다.
하지만 두 가지의 의미와 사용 방법에는 차이가 있다는 것을 이번에 알았다.
SQL에서 1은 숫자 데이터 타입이기 때문에, DB 호환성이 높다.
여러 개의 조건을 동적으로 추가할 때 유용하게 사용된다.
SELECT * FROM table WHERE 1=1 AND condition1 AND condition2;
논리적 표현이므로 가독성이 좋다.
하지만 일부 DB에서 지원되지 않을 수 있어 주의해야 한다.
SELECT * FROM table WHERE TRUE AND condition1 AND condition2;
일반적으로는 WHERE 1=1이 더 널리 사용되며 호환성 문제도 적다. WHERE TRUE가 가독성이 더 좋다고 생각된다면 사용해도 무방하나 DB 환경에 맞게 선택하면 된다고 한다.