sql >> Database >  >> RDS >> Mysql

MYSQL REGEXP zoeken in JSON-tekenreeks

Nou, het is vrij eenvoudig te debuggen:

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

geeft 0

. terug

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

geeft 1

. terug

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

geeft 1

. terug

Dus er klopt iets niet aan jouw zijde... omdat het gewoon geen rijen kon retourneren waar body gelijk is aan "listeListeOuiNon":"2" . Maar het is mogelijk dat die instantie meerdere van deze uitspraken heeft, zoiets als:

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

Dus je moet je regexp aanpassen:

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

Welnu, dan moet u uw zoekopdracht aanpassen:

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



  1. GTT-tabelstatistieken en SYS.WRI$_OPTSTAT_TAB_HISTORY

  2. Primaire MySQL-sleutels

  3. Hoe gebeurt databasecorruptie?

  4. mysql Ongeldig aantal kolommen in CSV-invoer tijdens het importeren van csv-bestand