Búsquedas con caracteres especiales

ñA la hora de crear campos en una tabla, se puede definir el collation (cotejamiento) a nivel de tabla o al nivel de campo. Debemos tener en cuenta el collate que elegimos, ya que básicamente, de esto depende el juego de caracteres utilizado y más importante aún, como realizará las búsquedas tanto con LIKE, como en comparación exacta de cadenas (con “=”).

Por defecto, el sistema creará tablas y campos de tipo de cadena con un collation utf8_general_ci, puesto que es el que se ha definido en el servidor por defecto. El ci, significa “Case Insensitive”, es decir que le da igual mayúsculas que minúsculas.

Si el collation es utf8_general_ci al buscar, será menos restrictivo. Es decir, no diferenciará una n de una ñ.

Si el collation es utf8_spanish_ci al buscar, será un poco más restrictivo. Es decir, si diferenciará una n de una ñ, pero no entre á y a o a de A.

Si el collation es utf_bin al buscar, será estricto. Es decir, si diferenciará una á de a o a de A.

Si a pesar de todo, la tabla ya tiene un campo definido con un collation y queremos realizar una búsqueda, pero de modo más o menos restrictivo, podemos emplear una clausula collate en la búsqueda, independientemente de cómo esté definida:

“Select * from tabla where apellido like ‘%Caño%’ collate Utf8_general_ci”,

Nos devolverá ñ, n, Ñ y N

Fernando Caño

JOSE CAÑO

Jose Luis Cano

ANTONIO LIZCANO

“Select * from tabla where apellido like ‘%Caño%’ collate Utf8_spanish_ci”,

Nos devolverá Ñ y ñ

Fernando Caño

JOSE CAÑO

“Select * from tabla where apellido like ‘%Caño%’ collate Utf8_bin”,

Nos devolverá

Fernando Caño

Mediante este método no hará caso al collation que tenga definido el campo. Ahora bien, si no añadimos el collate en la cláusula sql, en la búsqueda se aplicará el collation con el que esté definido el campo, y no tiene ninguno, el que tenga definida la tabla.

Advertisement

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.