Salve Pessoal ,
Estou tentando montar umas consultas da seguinte forma:
Quando a pessoa colocar uma frase ela me busca e traz todas as frases que tenho essas palavras
Isso em mysql
Tem alguma ideia?
Salve Pessoal ,
Estou tentando montar umas consultas da seguinte forma:
Quando a pessoa colocar uma frase ela me busca e traz todas as frases que tenho essas palavras
Isso em mysql
Tem alguma ideia?
select * from sua_tabela where lower(campo) like ‘%anatomia%codigo%’
Ola,
Valeu pela resposta, mas no caso eu dei um exemplo da frase em si.
Como eu coloco isso dentro da linha do select?(só com comandos)?
Por exemplo eu tenho os campos id, nome, cidade
Eu vou selecionar todas as cidades que tenho essas palavras juntas Mato Grosso.
Entao ele deve me retornar, Mato Grosso, Mato Grosso do Sul
É isso…
select id, nome, cidade
from sua_tabela
where lower(cidade) like ‘%mato%grosso%’
String valor = meuParametro.replaceAll(" ", "%");
...
"select id, nome, cidade
from sua_tabela
where lower(cidade) like '"+ valor +"'";
Aqui vai uma ideia meio maluca, mas talvez possa até funcionar…
public static List<SeuBean> pesquisarPorVariasPalavras(String... palavras)
throws SQLException
{
//Suponhamos que seu array contenha os seguintes valores: "Mato", "Grosso", "Parana" e "Minas Gerais".
StringBuilder builder = new StringBuilder();
for (int I = 0; I < palavras.length; ++I) {
builder.append("Select ");
builder.append("T.Id, T.Frase ");
builder.append("From ");
builder.append("Tabela T ");
builder.append("Where ");
builder.append("Upper(T.Nome) Like '%");
builder.append(palavras[I].toUpperCase());
builder.append("%' ");
if (I < palavras.length - 1) {
builder.append("Union All ");
}
}
Connection connection = ConnectionHelper.getConnection(); // ou qualquer método similar para conexão com Banco de Dados.
PreparedStatement statement = connection.prepareStatement(builder.toString());
ResultSet result = statement.executeQuery();
//...
}
No exemplo acima, sua query deverá ser a seguinte:
Select
T.Id, T.Frase
From
Tabela T
Where
Upper(Nome) Like '%MATO%'
Union All
Select
T.Id, T.Frase
From
Tabela T
Where
Upper(Nome) Like '%GROSSO%'
Union All
Select
T.Id, T.Frase
From
Tabela T
Where
Upper(Nome) Like '%PARANA%'
Union All
Select
T.Id, T.Frase
From
Tabela T
Where
Upper(Nome) Like '%MINAS GERAIS%'
Tente algo parecido, talvez funcione!
Abraços!
Nunca ouviste falar em OR ?
Nunca ouviste falar em OR ?
É claro que ouvi falar na cláusula OR. Mas o que impede de fazer de um jeito diferente, com UNION ALL, quando o resultado será o mesmo?
É claro que ouvi falar na cláusula OR. Mas o que impede de fazer de um jeito diferente, com UNION ALL, quando o resultado será o mesmo?
Acredito que o caminho mais indicado para o caso é trabalhar com indexação, o Hibernate Search pode ser uma boa saída:
http://www.hibernate.org/subprojects/search.html