Ser Programador

Regexp, o Like In do MySQL

Aprenda como fazer busca de um campo por vários termos diferentes


Olá, pessoal!

Hoje quero falar um pouco a respeito de como executar o comando LIKE IN no MySQL.

A primeira coisa a se saber é que não existe o comando LIKE IN, mas sim o REGEXP que faz não só exatamente a mesma coisa, mas muito mais que isso.

O comando REGEXP do MySQL tem por objetivo basicamente fazer buscas através de uma expressão regular. Futuramente farei um post abordando o assunto.



Então porque LIKE IN? Vamos recordar o funcionamento dos dois comandos:


LIKE

    	select
        	*
        from tb_usuarios
        where nome like '%Silva%'
    

O comando acima trará todos os usuários que tem em seu nome a string Silva.


IN

    	select
        	*
        from tb_usuarios
        where profissao in ('Médico', 'Engenheiro', 'Analista de Sistemas')
    

O comando acima trará todos os usuários que tem suas profissões dentre as que estão separadas por vírgula.


Sendo assim, LIKE IN seria a junção dos dois:

    	select
        	*
        from tb_usuarios
        where nome like in ('%Silva%', '%Prado%', '%Junior%')
    

Dessa forma a ideia seria que o comando acima troucesse todos os usuários que tem em seu nome os sobrenomes dentre os que estão separadas por vírgula.


Seria lindo se funcionasse, mas NÃO funciona.


É neste momento que o REGEXP entra em cena. vejamos um exemplo de simulação do LIKE IN acima:

    	select
        	*
        from tb_usuarios
        where nome REGEXP('Silva'|'Prado'|'Junior')
    

Dessa forma a query retornará resultados exatamente da forma que se esperava com o LIKE IN.


Futuramente falarei também sobre Expressões Regulares, assunto que ainda traz bastante polêmica e tabus, mas excencial para se trabalhar com o REGEXP.