Posts etiquetados ‘MySQL’


You can read the English version of this post in http://phpsblog.agustinvillalba.com/how-to-distinguish-upper-lowercase-and-utf8-characters-mysql/

En esta ocasión vamos a hablar sobre cómo generar una sencilla query de selección de datos en una base de datos MySQL, cuyo charset ha sido establecido como utf8_general_ci pero necesitamos distinguir entre datos con acentos y datos sin acentos, y yendo un poco más allá, si fuera posible, que no distinga entre palabras que empiecen con mayúsculas o minúsculas pero sí los acentos. Veamos cómo podríamos implementarlo.

Definición de nuestro problema

Expliquemos un poco mejor cuál es nuestro problema. Tenemos una base de datos MySQL en la que tenemos a su vez una tabla, por ejemplo, «usuarios», con varios campos: id, nombre y apellido. Esta base de datos fue creada con un charset utf8_general_ci. Pero, ¿qué significa esto? Obviamente, utf8 es el charset que nuestra base de datos va a gestionar. En segundo lugar, «general» indica que no utilizaremos el juego de caracteres propio de un idioma en concreto, (podríamos tener «utf8_spanish_ci», para el juego de carácteres propios del español), sino el utf8 de forma genérica. En último lugar, «ci» significa «Case Insensitive», de forma que en nuestras búsquedas, el motor de MySQL no hará distinciones entre «MAYÚSCULA», «Mayúscula» o «mayúscula». Lo que no es tan conocido es que el ser Case Insensitive también implica que no distinga los acentos del español, de forma que tampoco hace distinciones entre «mayúscula» o «mayuscula».

De forma que si tenemos 3 registros en nuestra tabla usuarios, en los cuales tenemos los siguientes valores para el campo nombre: «José», «Jose» y «JOSÉ», y ejecutamos la siguiente query:

SELECT * FROM `usuarios` WHERE `nombre` = 'jose'

Ésta nos devolverá los 3 registros de nuestra base de datos, sin distinciones.
(más…)


You can read the English version of this post in http://phpsblog.agustinvillalba.com/create-triggers-phpmyadmin/

Esta semana me he tenido que enfrentar a la «ardua» tarea de añadir un trigger a mi base de datos MySQL a través de phpMyAdmin. Digo ardua porque phpMyAdmin no admite, por defecto, la sintaxis estándar de MySQL para insertar los disapradores en la base de datos. Así que hoy vamos a hablar acerca de los triggers o disparadores de MySQL, sobre todo de cómo añadirlos a la base de datos en cuestión a través del gestor phpMyAdmin. (más…)