sql >> Databasteknik >  >> RDS >> Mysql

MYSQL REGEXP sökning i JSON-sträng

Tja, det är ganska lätt att felsöka:

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

returnerar 0

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

returnerar 1

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

returnerar 1

Så något är inte rätt vid din sida... eftersom det bara inte kunde returnera rader där body är lika med "listeListeOuiNon":"2" . Men det är möjligt, det organet har flera av dessa uttalanden, ungefär:

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

Så du måste ändra ditt regexp:

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

Tja, då måste du ändra din fråga:

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



  1. Inre sammanfoga 2 tabeller med samma kolumnnamn

  2. där 1=1 påstående

  3. hitta alla namn med mysql-fråga som börjar med bokstaven 'a'

  4. Välj MYSQL-rader men rader i kolumner och kolumner i rader