Tecnologías, Internet y Contenidos v. 2.0

Joomla, Wordpress, Blogger, Twitter...

MySql - Búsqueda de texto con/sin tildes

votar

Cuantas veces nos ha pasado que buscamos una palabra y como tiene una tilde no nos aparece en las búsquedas? Para los desarrolladores, esto es un tema de poca importancia, pero a veces los usuarios son muy detallistas, y quieren que sus búsquedas muestren muchas cosas.

Generalmente, en MySQL se utiliza latin1_general_ci como codificación de la base de datos. Esta codificación, como todas las que llevan el sufijo _ci, no distingue entre mayúsculas y minúsculas. Pero si que distingue caracteres acentuados de los no acentuados. Por lo tanto, si nosotros queremos que en nuestras búsquedas no se tengan en cuenta las tildes, debemos utilizar otra codificación, aunque solo sea en la búsqueda. Basta con añadir en la query SQL la sentencia COLLATE como se ve en la siguiente linea.

WHERE campo LIKE _utf8 '%$word%' COLLATE utf8_general_ci

Con esta pequeña modificación y sin hacer nada mas.. conseguiremos que los usuarios no dejen de ver un resultado por poner o no una tilde, lo cual es bastante util.

7 comentarios

  1. mujeres Says:
  2. me sirvió de mucho.. gracias

     
  3. Unknown Says:
  4. Es exactamente lo que estaba buscando hacer... Muchisimas gracias
    CONTROL JAALL!!!!

     
  5. Por si algo falla, recuerden pasar la variable que contenga el string ($word) como utf8 en php utf8_encode($word)

    Saludos y gracias

     
  6. Anónimo Says:
  7. creo k te amo ... he resuelto mi vida .... bueno casi jejeje saludos y este es un perfecto aporte.

     
  8. xunxoadicto Says:
  9. muchas gracias, me resultó

     
  10. xunxoadicto Says:
  11. muchas gracias, me resultó

     
  12. BoB Says:
  13. y si lo tengo en utf8 y quiero que si distinta las tildes?

     

Publicar un comentario

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.