Cóż, debugowanie jest dość łatwe:
SELECT '"listeListeOuiNon":"2"' REGEXP BINARY '"listeListeOuiNon":".*1.*"'
zwraca 0
SELECT '"listeListeOuiNon":"1"' REGEXP BINARY '"listeListeOuiNon":".*1.*"'
zwraca 1
SELECT '"listeListeOuiNon":"1,2"' REGEXP BINARY '"listeListeOuiNon":".*1.*"'
zwraca 1
Więc coś jest nie tak po Twojej stronie... ponieważ po prostu nie może zwrócić wierszy, w których body równa się "listeListeOuiNon":"2"
. Ale jest możliwe, że to ciało zawiera kilka z tych stwierdzeń, na przykład:
body => '"listeListeOuiNon":"1,2", "listeListeOuiNon":"2"'
Musisz więc zmodyfikować swoje wyrażenie regularne:
'^"listeListeOuiNon":".*1.*"$'
W takim razie musisz zmodyfikować zapytanie:
SELECT DISTINCT tag, body FROM pages
WHERE (body REGEXP BINARY '"listeListeOuiNon":".*1.*"') AND NOT (body REGEXP BINARY '"listeListeOuiNon":"2"')