2012-02-24 2 views
3

SQL 쿼리를 생성하는 함수를 만들려고합니다. 매개 변수로 주어진 식으로 결과를 필터링합니다 ('WHERE'절로 전달됨). 매개 변수를 생략하면 모든 결과가 반환됩니다.테이블의 모든 레코드를 항상 선택하는 WHERE 절

이 작업을 수행하기 위해 null 매개 변수를 테스트하고 매개 변수가 주어진 경우에만 where 절을 작성할 수 있습니다 (where = (parameter != null) ? "" : "WHERE " + parameter). 그러나, 나는 항상 모든 결과를 반환하는 기본 설정할 수있는식이 있는지 생각하고있었습니다. 이렇게하면 WHERE 키워드 (where = "WHERE " + parameter)를 포함할지 여부를 테스트 할 필요가 없습니다.

주입을 피하기 위해 매개 변수를 이스케이프 처리하지 않았다고 일부러 언급하지 않았습니다. 나는 이것을 내 해결책으로 잊지 않을 것이다, 나는 약속한다! :)

+0

어떤 언어를 사용하고 있습니까? 아니면 독점적 인 SQL 언어 (예 : T-SQL)를 사용하여 검색어를 생성합니까? 태그를 추가하십시오 – PinnyM

+1

유사 : http://stackoverflow.com/a/8149183/27535 – gbn

+0

이것은 내가 독점하고있는 독점적 인 SQL 언어입니다. 이것을 할 수있는 방법이 없을 수도 있습니다. 그러나 이것을 시작점으로 삼는 '표준'방법을 찾았을 것입니다. –

답변

9

나는 보통 1 = 1을 사용합니다.

1

매개 변수를 TRUE 또는 1으로 초기화 할 수 있습니다.

+3

모든 DBMS가이를 지원하는 것은 아닙니다. OP는 그가 사용하고있는 DMBS를 지정하지 않았습니다. – ruakh

4
(where = "WHERE 1 = 1 " + parameter) 

이 경우 매개 변수는 "AND"토큰으로 시작해야합니다.