sql >> Base de Datos >  >> RDS >> Mysql

Búsqueda MYSQL REGEXP en cadena JSON

Bueno, es bastante fácil de depurar:

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

devuelve 0

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

devuelve 1

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

devuelve 1

Entonces, algo no está bien a su lado... porque simplemente no pudo devolver filas donde el cuerpo es igual a "listeListeOuiNon":"2" . Pero es posible, ese cuerpo tiene varias de estas declaraciones, algo como:

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

Así que tienes que modificar tu expresión regular:

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

Bueno, entonces tienes que modificar tu consulta:

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