sql >> Base de Datos >  >> RDS >> Mysql

Consulta de búsqueda insensible al acento en MySQL

Puede cambiar la intercalación en tiempo de ejecución en la consulta sql,

...where title like '%torun%' collate utf8_general_ci

pero tenga en cuenta que cambiar la intercalación sobre la marcha en tiempo de ejecución elimina la posibilidad de que mysql use un índice, por lo que el rendimiento en tablas grandes puede ser terrible.

O puede copiar la columna a otra columna, como searchable_title , pero cambie la intercalación en él. En realidad, es común hacer este tipo de cosas, donde copia datos pero los tiene en una forma ligeramente diferente que está optimizada para alguna carga de trabajo/propósito específico. Puede usar disparadores como una buena manera de mantener sincronizadas las columnas duplicadas. Este método tiene el potencial de funcionar bien, si se indexa.

Nota:asegúrese de que su base de datos realmente tenga esos caracteres y no entidades html. Además, el conjunto de caracteres de su conexión es importante. Lo anterior supone que está configurado en utf8, por ejemplo, a través de set nombres como set names utf8

Si no, necesita un presentador por el valor literal

...where title like _utf8'%torun%' collate utf8_general_ci

y, por supuesto, el valor entre comillas simples debe estar codificado en utf8, incluso si el resto de la consulta SQL no lo está.