Select sem % [RESOLVIDO]

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á.

use o caracter = em vez do like

Para este método até que funciona, mas eu tenho outros métodos que exigem o uso do ilike, por exemplo eu tenho um método onde o usuário procura apenas as pessoas que comecem com um nome específico, neste caso acho que não tem como.

Eu creio que eu terei que escapar os caracteres % e _, mas eu queria evitar fazer isso.

e se vc impedir que % seja digitado, ou se for digitado vc tira ele

usanto split

att,

Acho que é isso mesmo que vou ter que fazer. Obrigado.

opa,

tranquilo!

acho q essa é a melhor solução.

abçsssssssss