문제

나는 정수 목록을 다음과 같은 절의 sqltemplate에 바인딩하려고합니다.

SELECT * FROM table1 WHERE id IN ( #bind($idList) );

ID 문자열이 있습니다.

idList = "1, 2, 3, 4";

BIND를 성공적으로 수행 할 수 없으며 문자열을 통과 할 때 확인할 ID 목록으로 값을 반환하지 않습니다.

이것을 실행하기 위해 문자열 연결을 사용해야합니다 (이상적이지 않음).

내가 어떻게 제대로 묶을 수 있는지에 대한 아이디어가 있습니까?

미리 감사드립니다.

(Java/Cayenne/Postgres를 사용하고 있고, IDLIST가 매개 변수로 전달 된 쿼리를 실행하고 있습니다. 이것은 내가 실행중인 실제 SQL이 아니라 단순화 된 예입니다).

업데이트 나는 그것을하는 방법을 알아 냈습니다. 아래에 답하십시오.

도움이 되었습니까?

해결책

좋아, 질문을 게시하자마자 어떻게 해야하는지 알았습니다.

문자열이있는 대신 SO와 같은 정수 목록을 사용하십시오.

List<Integer> ids = {1,2,3,4,5} (pseudocode) 

바인드를 수행하려면 다음이 필요합니다.

SELECT * FROM table1 WHERE id IN ( #bind($idList, 'INTEGER') );

그런 다음 평소와 같이 매개 변수를 전달하면 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top