Vincents отличного ответ для Прописных Первого Письма работает отлично подходит для первой буквы только капитализации всей строки столбца ..
НО что, если вы хотите, чтобы в верхнем регистр первой буквы каждого слова в строках столбца таблицы?
например: "Аббевилль High School"
Я не нашел ответ на это в Stackoverflow. Мне пришлось собрать несколько ответов, которые я нашел в Google, чтобы обеспечить надежное решение вышеприведенного примера. Это не нативная функция, а функция, созданная пользователем, которую поддерживает MySQL версии 5+.
Если у вас есть статус пользователя Super/Admin в MySQL или локальная установка mysql на вашем собственном компьютере, вы можете создать FUNCTION (например, хранимую процедуру), который находится в вашей базе данных и может использоваться во всех будущих SQL-запросах любая часть дБ.
Функция Я создал позволяет мне использовать эту новую функцию я назвал «UC_Words» так же, как встроенные в нативных функций MySQL, так что я могу полностью обновить колонку так:
UPDATE Table_name
SET column_name = UC_Words(column_name)
Чтобы вставить функциональный код, я изменил стандартный разделитель MySQL (;) во время создания функции, а затем вернул его в исходное состояние после скрипта создания функции. Я также лично хотел, чтобы выход был в UTF8 CHARSET.
создание Функции =
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 ;
Это работает лакомство выводящего верхнийРЕГИСТРа первых буквы на нескольких слов в строке.
Предполагая, что ваше имя пользователя для входа в MySQL имеет достаточные привилегии - если нет, и вы не можете создать временную БД на своей персональной машине для преобразования ваших таблиц, а затем спросите своего хостинг-провайдера, установит ли она эту функцию для вас.
Это не будет работать, + это не CONCAT оператор с MySQL. – 2010-11-24 03:47:32
ответ, который написал Энрико Паллаццо, должен работать нормально – 2010-11-24 03:49:56
Я просто пытался выделить функцию UCASE в MySQL: P :) – 2010-11-24 03:51:50