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

Pesquisa MYSQL REGEXP na string JSON


Bem, é bem fácil de depurar:

SELECT '"listeListeOuiNon":"2"' REGEXP BINARY '"listeListeOuiNon":".*1.*"'

retorna 0

SELECT '"listeListeOuiNon":"1"' REGEXP BINARY '"listeListeOuiNon":".*1.*"'

retorna 1

SELECT '"listeListeOuiNon":"1,2"' REGEXP BINARY '"listeListeOuiNon":".*1.*"'

retorna 1

Então, algo não está certo ao seu lado... porque simplesmente não pôde retornar linhas onde o corpo é igual a "listeListeOuiNon":"2" . Mas é possível que esse corpo tenha várias dessas declarações, algo como:

body => '"listeListeOuiNon":"1,2", "listeListeOuiNon":"2"'

Então você tem que modificar seu regexp:

'^"listeListeOuiNon":".*1.*"$'

Bem, então você tem que modificar sua consulta:

SELECT DISTINCT tag, body FROM pages WHERE (body REGEXP BINARY '"listeListeOuiNon":".*1.*"') AND NOT (body REGEXP BINARY '"listeListeOuiNon":"2"')