Bem, é bem fácil de depurar:
SELECT '"listeListeOuiNon":"2"' REGEXP BINARY '"listeListeOuiNon":".*1.*"'
retorna 0
SELECT '"listeListeOuiNon":"1"' REGEXP BINARY '"listeListeOuiNon":".*1.*"'
retorna 1
SELECT '"listeListeOuiNon":"1,2"' REGEXP BINARY '"listeListeOuiNon":".*1.*"'
retorna 1
Então, algo não está certo ao seu lado... porque simplesmente não pôde retornar linhas onde o corpo é igual a
"listeListeOuiNon":"2"
. Mas é possível que esse corpo tenha várias dessas declarações, algo como:body => '"listeListeOuiNon":"1,2", "listeListeOuiNon":"2"'
Então você tem que modificar seu regexp:
'^"listeListeOuiNon":".*1.*"$'
Bem, então você tem que modificar sua consulta:
SELECT DISTINCT tag, body FROM pages
WHERE (body REGEXP BINARY '"listeListeOuiNon":".*1.*"') AND NOT (body REGEXP BINARY '"listeListeOuiNon":"2"')