2009-01-29 8 views
3

몇 시간 동안 LIKE 문 내부에서 작동하도록 IN 매개 변수를 얻으려고 싸우고 있습니다! PreparedStatement와 동일한 규칙을 따라야한다는 CachedRowSet을 사용하고 있습니다.
여기 기본 쿼리입니다 :어떻게 행 집합에 LIKE를 사용하여 IN 매개 변수를 배치합니까?

CachedRowSet cache; 
String sql = "SELECT x " + 
       "FROM Y " + 
      "WHERE z LIKE '?__'" 

cache.setCommand(sql); 
cache.setString(1, "someString"); 

someString가 알려진 ID하지만 데이터베이스입니다 항목을 알 수없는이 문자의 접미사가 (방법은 PostgreSQL의가에 의해).

답변

5

따옴표 안에 매개 변수 자리 표시자는 무시됩니다. 그들은 문자 그대로 "?"로 해석됩니다. 매개 변수를 사용하는 경우 SQL 표현식에 따옴표 바깥에 자리 표시자를 넣어야합니다.

그러나 LIKE는 임의의 문자열 또는 문자열을 생산하고있는 표현에 비교 될 수있다. 예를 들어 :

SELECT x FROM y WHERE z LIKE (? || '__') 

이제 매개 변수에 대해 "someString"를 제공 할 수 있으며, 다음은 상수 문자열 '__'와 연결됩니다.

+0

작동합니다! 감사! – WolfmanDragon