왜 누군가가 쿼리에서`1 = 1`을 넣을까요?


18

나는 where 절의 첫 번째 문장이있는 데이터베이스에서 오늘의 견해를 보았습니다 where 1 = 1. 모든 레코드에 대해 이것이 사실이 아닙니까? 레코드를 필터링하지 않는 경우 누군가 이것을 작성하는 이유는 무엇입니까?


여기에 대답
Gaius

3
그들이 sombodys 웹 사이트를 해킹하고 싶기 때문에 ;-)
Tim Schmelter

답변:


40

일부 동적 쿼리 빌더에는이 조건이 포함되어 있으므로 "확인" AND을 수행하지 않고도 "실제"조건을 추가 할 수 있습니다 if (first condition) 'WHERE' else 'AND'.


쿼리 빌더가 조건이 첫 줄에 있는지 알 수 없다는 것이 이상하게 들리지만, 당신도 옳습니다.
ern0

3
"쿼리 빌더"가 직접 SQL 문에 연결하는 코드를 작성하는 사람인 경우가 종종 있습니다. 때로는 더 공식적인 쿼리 작성 라이브러리를 도입하면 제거됩니다.
araqnid

1
나는 이와 같은 "오래된"코드를 다루어야했고, 그것은 매우 사실이다. 전체 SQL 문을 단일 문자열로 어셈블 할 때 트리거되거나 트리거되지 않는 if / then 또는 case 문이 있습니다. 해당 코드 경로가 있는지 알 수 없으므로 WHERE 절에 AND가 포함되어 있고 (일관되게 문자열의 일부인 절 때문에) (a) 문제가되는 AND 또는 ( b) 간단히 논리적 논리를 전달하십시오. 문자열을 올바르게 수정하는 것보다 "1 = 1"을 추가하는 것이 더 쉽습니다.
에이버리 페인

5

프로그램에 유사한 쿼리 를 생성하는 많은 SQL 문 작성 지점 이있는 경우이 트릭으로 검사 대상을 표시 할 수 있습니다. 문장이 계산에 관한 것이라면 아래 코드를 사용 42하여 SQL 로그에서 grep 할 수 있습니다 .

select count(42) from table

4

항상 참인 상황을 제공하므로 결과에 영향을 미치지 않지만 WHERE 절에 하나의 항목이 이미 있다는 것을 알고 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.