Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como escrever uma consulta MySQL onde A contém ( a ou b )


Duas opções:

  1. Use o LIKE palavra-chave, juntamente com os sinais de porcentagem na string
    select * from table where field like '%a%' or field like '%b%'.
    

    (observação:se sua string de pesquisa contiver sinais de porcentagem, você precisará escapar deles)

  2. Se você estiver procurando por uma combinação de strings mais complexa do que especificou em seu exemplo, você pode expressões regulares (regex):

    Consulte o manual do MySQL para saber mais sobre como usá-los:http:/ /dev.mysql.com/doc/refman/5.1/en/regexp.html

Destes, usando LIKE é a solução mais comum -- é o SQL padrão e de uso comum. Regex é menos comumente usado, mas muito mais poderoso.

Observe que, independentemente da opção escolhida, você precisa estar ciente das possíveis implicações de desempenho. Procurar por substrings como esta significará que a consulta terá que varrer toda a tabela. Se você tiver uma tabela grande, isso pode tornar a consulta muito lenta e nenhuma quantidade de indexação ajudará.

Se isso for um problema para você e você precisar pesquisar as mesmas coisas várias vezes, talvez prefira fazer algo como adicionar um campo de sinalizador à tabela que especifica que o campo de string contém o subtexto relevante. cordas. Se você mantiver esse campo de sinalizador atualizado ao inserir ou atualizar um registro, poderá simplesmente consultar o sinalizador quando desejar pesquisar. Isso pode ser indexado e tornaria sua consulta muito mais rápida. Se vale a pena o esforço para fazer isso, depende de quão ruim o desempenho está usando LIKE .