Olá pessoa, estou com um problema, estou fazendo um select onde o usuário deve digitar exatamente o texto que quer procurar, veja o método abaixo:
public List<Pessoa> m_GetByNameExact(String p_Nome, boolean ignorarAcentos) {
this.m_Conectar();
try {
if (ignorarAcentos) {
this.stmt = this.conexao.prepareStatement("SELECT * FROM tbpessoa WHERE (sem_acento(Nome) ILIKE sem_acento(?))");
} else {
this.stmt = this.conexao.prepareStatement("SELECT * FROM tbpessoa WHERE (Nome ILIKE ?)");
}
this.stmt.setString(1, p_Nome);
List<Pessoa> resultado = this.m_Retrieve(this.stmt.executeQuery());
if (resultado.size() > 0) {
return resultado;
}
} catch (SQLException ex) {
Logger.getLogger(PessoaDAO.class.getName()).log(Level.SEVERE, null, ex);
}
this.m_Desconectar();
return null;
}
Digamos que tenhamos as seguintes pessoas cadastradas:
Ana Carla
Ana Maria
Ana Flores
Dai o usuário deve digitar o nome exato, exemplo se ele digitar apenas Ana, não retorna nada, mas se ele digitar Ana Carla, retorna o primeiro registro.
Até aqui está tudo funcionando porém se o usuário digitar Ana%, ele retorna todas Anas, traduzindo ele está aceitando os caracteres curinga na pesquisa, alguém sabe como tratar isto de uma forma simples?
Obrigado, desde já.