Fala galera, estou precisando de uma ajudinha aqui num SELECT do MySQL, tenho uma aplicação WEB onde posso filtrar coisa e trazer o resultado numa dataTable, está tudo ok, porém queria implementar uma consulta que o usuários possa filtrar vários critérios de uma vez separando os textos a procurar por ponto e vírgula, exemplo:
SELECT *
FROM tabela
WHERE produto = 'ARROZ;FEIJAO;MACARRAO'
ORDER BY cod ASC
Eu consegui chegar nisto, vejam usando minha tabela real, o que eu faço aqui? Se o usuário não digitar nada no campo de pesquisa coloco um “|” se digitar “texto1;texto2;texto3;” ai substituo o “;” por “|” e roda normalmente:
SELECT * FROM tb_rnc
WHERE
numero_rnc REGEXP(REPLACE('|', ';' , '|')) AND
status_rnc REGEXP(REPLACE('|', ';' , '|')) AND
nota_fiscal REGEXP(REPLACE('|', ';' , '|')) AND
material REGEXP(REPLACE('|', ';' , '|')) AND
status_plano_acao REGEXP(REPLACE('|', ';' , '|')) AND
numero_alerta_qualidade REGEXP(REPLACE('|', ';' , '|')) AND
numero_rac REGEXP(REPLACE('|', ';' , '|'))
ORDER BY cod DESC;
Está funcionando perfeitamente ok, porém quando se depara com uma coluna que tenha NULL
não funciona.
Consultando, as duas colunas em destaque abaixo é NULL então não traz nada:
Agora se eu não incluo estas colunas que tem NULL então traz a consulta pois as demais colunas possuem informação:
Existe alguma outra forma de fazer esta consulta?