Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MYSQL REGEXP Suche in JSON-Zeichenfolge

Nun, es ist ziemlich einfach zu debuggen:

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

gibt 0 zurück

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

gibt 1 zurück

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

gibt 1 zurück

Also stimmt etwas an Ihrer Seite nicht ... weil es einfach keine Zeilen zurückgeben konnte, in denen body gleich "listeListeOuiNon":"2" ist . Aber es ist möglich, dass dieser Körper mehrere dieser Anweisungen hat, etwa so:

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

Sie müssen also Ihren regulären Ausdruck ändern:

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

Nun, dann müssen Sie Ihre Abfrage ändern:

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