Busca usando pedaços de string

5 respostas
Thali

Oi gente,

Eu estou tentando realizar uma busca usando pedaços de uma string.
Por exemplo: Maria Luiza da Silva.
Quero pôr Maria e aparecerem todas as “Marias” que existiremno meu banco de dados.
Eu estou fazendo assim:

"lower(m.crm) like ‘%’ + lower(#{medicoList.medico.crm}) + ‘%’ ",};

Mas não está dando certo :frowning: . Mas não sei o porquê. Alguma sugestão ?
Obrigada!!

5 Respostas

f4binho

Qual é o banco que vc está usando?

Thali

MySQL.
Mas é pelo hibernate que faz isso não é ?
Comecei a usar isso agora, não entendo muito bem…!

f4binho

Você pode resolver isso fazendo uma consulta no banco utilizando a cláusula LIKE

select * from <> where nome like ‘Maria%’

e pegar os resultados num ResultSet. O único problema é o MySql não suporta o ILIKE, que retornaria todas as Marias sendo elas registradas com letras maiúsculas ou minúsculas. Utilizando só o LIKE dessa forma retormatá as Marias que começam exatamente com

“Maria”

exemplo:

Maria José

Maria Joaquina

No caso : MARIA ALCÂNTARA, não retornaria, pois a string Maria esté toda em caixa alta.

espero ter ajudado

davidbuzatto

Essa sua consulta vc está montando onde?

Thali

[color=red]private static final String EJBQL = “SELECT m FROM Medico m”;

private static final String[] RESTRICTIONS = {
	"replace( replace( replace( replace( replace ( lower(m.nome),'á','a'), 'é','e'),'í','i'),'ó','o'),'ú','u') like '%' + lower(#{medicoList.medico.nomeSemAcento}) + '%' ",
	"lower(m.crm) like '%' + lower(#{medicoList.medico.crm}) + '%' ",};

[/color]

É assim que ele faz a consulta, mas eu não consigo fazer com que ele ache todos os nomes que tenham a parte que eu escrevi.
Como “Maria da Silva”, “Maria Regina”, essas coisas!
E embaixo eu estou tentando fazer com números!
CRM = 123456
Eu quero escrever 123 e que apareçam todos os CRM´s que tenham “123”.

Eu estou montando essa consulta no Eclipse, usando JBoss através do HQL.

f4binho, obrigada pelo conselho, mas mesmo assim não vai !

Valeu gente !

Criado 10 de junho de 2010
Ultima resposta 14 de jun. de 2010
Respostas 5
Participantes 3