2009-01-29 10 views
3

Je me bats pour obtenir un paramètre IN pour travailler dans une instruction LIKE maintenant pendant des heures! J'utilise un CachedRowSet, que je comprends devrait suivre les mêmes règles qu'un PreparedStatement.
Voici la requête de base:Comment placer un paramètre IN avec un LIKE avec un RowSet?

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

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

someString est un identifiant connu, mais la base de données (par la façon dont est PostgreSQL) entrée a un suffixe 2 char inconnu.

Répondre

5

Les espaces réservés aux paramètres entre guillemets sont ignorés. Ils sont interprétés comme un "?" Littéral. Si vous utilisez un paramètre, vous devez placer l'espace réservé hors des guillemets dans l'expression SQL.

Mais LIKE peut être comparé à n'importe quelle chaîne ou n'importe quelle expression qui produit une chaîne. Par exemple:

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

Maintenant, vous pourriez fournir « someString » pour le paramètre, puis il sera concaténé avec la chaîne constante '__'.

+0

Ca marche !!! Merci! – WolfmanDragon