Mysql
 sql >> Database >  >> RDS >> Mysql

MYSQL REGEXP cerca nella stringa JSON

Bene, è abbastanza facile eseguire il debug:

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

restituisce 0

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

restituisce 1

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

restituisce 1

Quindi qualcosa non è al tuo fianco... perché semplicemente non potrebbe restituire righe in cui body è uguale a "listeListeOuiNon":"2" . Ma è possibile che quel corpo abbia molte di queste affermazioni, qualcosa come:

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

Quindi devi modificare la tua espressione regolare:

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

Bene, allora devi modificare la tua query:

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