Bueno, es bastante fácil de depurar:
SELECT '"listeListeOuiNon":"2"' REGEXP BINARY '"listeListeOuiNon":".*1.*"'
devuelve 0
SELECT '"listeListeOuiNon":"1"' REGEXP BINARY '"listeListeOuiNon":".*1.*"'
devuelve 1
SELECT '"listeListeOuiNon":"1,2"' REGEXP BINARY '"listeListeOuiNon":".*1.*"'
devuelve 1
Entonces, algo no está bien a su lado... porque simplemente no pudo devolver filas donde el cuerpo es igual a "listeListeOuiNon":"2"
. Pero es posible, ese cuerpo tiene varias de estas declaraciones, algo como:
cuerpo => '"listeListeOuiNon":"1,2", "listeListeOuiNon":"2"'
Así que tienes que modificar tu expresión regular:
'^"listeListeOuiNon":".*1.*"$'
Bueno, entonces tienes que modificar tu consulta:
SELECT DISTINCT tag, body FROM pages
WHERE (body REGEXP BINARY '"listeListeOuiNon":".*1.*"') AND NOT (body REGEXP BINARY '"listeListeOuiNon":"2"')