Como faço para colocar um parâmetro com um LIKE com um conjunto de linhas?
-
20-08-2019 - |
Pergunta
Eu lutando para obter um parâmetro para trabalhar dentro de uma declaração como agora por horas!
Eu estou usando um CachedRowSet, que eu entendo deve seguir as mesmas regras que um PreparedStatement.
Aqui está a consulta básica:
CachedRowSet cache;
String sql = "SELECT x " +
"FROM Y " +
"WHERE z LIKE '?__'"
cache.setCommand(sql);
cache.setString(1, "someString");
someString é um id conhecido, mas o banco de dados (por sinal é PostgreSQL) entrada tem um sufixo caractere desconhecido 2.
Solução
Parâmetros espaços reservados dentro de aspas são ignoradas. Eles são interpretados como um literal "?". Se você usar um parâmetro, você deve colocar as aspas espaço reservado fora na expressão SQL.
Mas LIKE
pode ser comparado a qualquer corda ou qualquer expressão que produz uma string. Por exemplo:
SELECT x FROM y WHERE z LIKE (? || '__')
Agora você poderia fornecer "someString" para o parâmetro, e então ele vai ser concatenado com o '__'
string constante.