Ver Mensaje Individual
  #9 (permalink)  
Antiguo 09/05/2013, 11:16
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: Excluir palabras de una consulta

Esto es con regexp para InnoDB. Te pongo la lógica:
mediante union all me traigo aquellos registros que tienen la palabra para y que a la vez tiene par o par+ dos o más caracteres
eso lo uno a todos aquellos registros que no tienen la palabra para y sí la cadena par con algo por delante o por detrás.

Observa las dificultades, pero funcionar funciona, aunque es solo para la palabra para. Voy a probar con FULL-TEXT y si puedo te lo escribo en este mismo post.
Código MySQL:
Ver original
  1. (
  2. SELECT id, campo
  3. FROM tabla
  4. WHERE campo
  5. REGEXP '[[:<:]]para[[:>:]]' =1
  6. AND (
  7. campo
  8. REGEXP 'par[a-zA-Z]{2,}'
  9. OR campo
  10. REGEXP '[[:<:]]par[[:>:]]' =1
  11. OR campo
  12. REGEXP 'par(b|c|d|e|f|g|h|i|j|k|l|m|n|ñ|o|p|q|r|s|t|u|w|x|y|z).*'
  13. )
  14. )
  15.  
  16. SELECT id, campo
  17. FROM tabla
  18. WHERE campo
  19. REGEXP '[[:<:]]para[[:>:]]' =0
  20. AND campo LIKE '%par%'
  21. )