Vincent excelente respuesta para mayúsculas primera carta funciona muy bien para la primera letra única capitalización de una cadena columna entera ..
pero lo que si quieres mayúscula la primera letra de cada palabra en las cuerdas de una columna de tabla?
por ejemplo: "High School Abbeville"
no había encontrado una respuesta a esto en Stackoverflow. Tuve que improvisar algunas respuestas que encontré en Google para proporcionar una solución sólida al ejemplo anterior. No es una función nativa, sino una función creada por el usuario que permite MySQL versión 5+.
Si tiene estado de usuario Super/Admin en MySQL o tiene una instalación mysql local en su propia computadora puede crear una FUNCIÓN (como un procedimiento almacenado) que se encuentra en su base de datos y puede usarse en todas las futuras consultas SQL en cualquier parte de la db.
La función creé me permite usar esta nueva función que se llama "UC_Words" al igual que el construido en funciones nativas de MySQL de modo que pueda actualizar una columna completa de esta manera:
UPDATE Table_name
SET column_name = UC_Words(column_name)
Para insertar el código de función, cambié el delimitador estándar MySQL (;) mientras creaba la función, y luego la reiniciaba a la normalidad después de la secuencia de comandos de creación de función. También personalmente quería que la salida también estuviera en UTF8 CHARSET.
creación de función =
DELIMITER ||
CREATE FUNCTION `UC_Words`(str VARCHAR(255)) RETURNS VARCHAR(255) CHARSET utf8_general_ci
BEGIN
DECLARE c CHAR(1);
DECLARE s VARCHAR(255);
DECLARE i INT DEFAULT 1;
DECLARE bool INT DEFAULT 1;
DECLARE punct CHAR(17) DEFAULT '()[]{},[email protected];:?/';
SET s = LCASE(str);
WHILE i < LENGTH(str) DO
BEGIN
SET c = SUBSTRING(s, i, 1);
IF LOCATE(c, punct) > 0 THEN
SET bool = 1;
ELSEIF bool=1 THEN
BEGIN
IF c >= 'a' AND c <= 'z' THEN
BEGIN
SET s = CONCAT(LEFT(s,i-1),UCASE(c),SUBSTRING(s,i+1));
SET bool = 0;
END;
ELSEIF c >= '0' AND c <= '9' THEN
SET bool = 0;
END IF;
END;
END IF;
SET i = i+1;
END;
END WHILE;
RETURN s;
END ||
DELIMITER ;
Esto funciona un convite salida primeras letras mayúsculas en múltiples palabras dentro de una cadena.
Asumiendo que su nombre de usuario de MySQL tiene privilegios suficientes - si no es así, y no puedes configurar una base de datos temporal en su máquina personal para convertir las tablas, a continuación, pedir a su proveedor de alojamiento compartido si se van a ajustar esta función para usted.
gracias - eso hizo lo que necesitaba. Olvidé mencionar que primero tenía que establecer minúsculas. gracias – Chin