Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Nelson V

RegExp para um campo CSV (valores separados por vírgulas)

Recommended Posts

Fala senhores, tudo bem?

 

Eu to tentando resolver uma coisa e realmente estou perdido... rs

 

Eu tenho um campo numa tabela de MYSQL que é uma série de números separados em vírgula, como um CSV

Por exemplo:

 

tipos_prod -> 2,5,9,22,457,600

 

e to tentando fazer uma query que busque os itens que contenham um número específico nesse array, como:

 

SELECT * FROM `anunciantes` WHERE `tipos_prod` RLIKE '[^0-9]+22[^0-9]+'

onde 22 é um número que estou buscando por exemplo.

 

O problema é que esse REGEXP não funciona se o número for o primeiro ou o último, como o 2 e o 600 no exemplo.

Eu estava tentando achar a sintaxe certa para um condicional na REGEXP (como (?=pergunta)(if)|(else)) do MYSQL mas não achei...

 

 

Alguém sabe a sintaxe certa para essa busca que estou fazendo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala senhores, tudo bem?

 

Eu to tentando resolver uma coisa e realmente estou perdido... rs

 

Eu tenho um campo numa tabela de MYSQL que é uma série de números separados em vírgula, como um CSV

Por exemplo:

 

tipos_prod -> 2,5,9,22,457,600

 

e to tentando fazer uma query que busque os itens que contenham um número específico nesse array, como:

 

SELECT * FROM `anunciantes` WHERE `tipos_prod` RLIKE '[^0-9]+22[^0-9]+'

onde 22 é um número que estou buscando por exemplo.

 

O problema é que esse REGEXP não funciona se o número for o primeiro ou o último, como o 2 e o 600 no exemplo.

Eu estava tentando achar a sintaxe certa para um condicional na REGEXP (como (?=pergunta)(if)|(else)) do MYSQL mas não achei...

 

 

Alguém sabe a sintaxe certa para essa busca que estou fazendo?

Consegui resolver, mas de uma forma totalmente gambiarrizada...

SELECT * FROM `anunciantes` WHERE `tipos_prod` RLIKE '[^0-9]+574[^0-9]+' OR `tipos_prod` RLIKE '^574[^0-9]+' OR `tipos_prod` RLIKE '[^0-9]+574$' OR `tipos_prod` RLIKE '^574$' ORDER BY anunc_id

 

Se alguém tiver um solução mais elegante gostaria de ver

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.