Vincents ausgezeichnete Antwort für Versalien Erste Schreiben funktioniert gut für den ersten Buchstaben nur Kapitalisierung einer ganzen Spalte Zeichenfolge ..
aber was, wenn Sie den ersten Buchstaben jedes Wortes in Großbuchstaben wollen in den Strings einer Tabellenspalte?
zB: "Abbeville High School"
ich keine Antwort auf diese in Stackoverflow gefunden hatten. Ich musste einige Antworten, die ich in Google gefunden hatte, zusammenfügen, um eine solide Lösung für das obige Beispiel zu bieten. Es ist keine native Funktion, sondern eine vom Benutzer erstellte Funktion, die MySQL Version 5+ erlaubt.
Wenn Sie Super/Admin-Benutzerstatus auf MySQL haben oder eine lokale mysql-Installation auf Ihrem eigenen Computer haben, können Sie eine FUNCTION (wie eine gespeicherte Prozedur) erstellen, die in Ihrer Datenbank gespeichert ist und in allen zukünftigen SQL-Abfragen verwendet werden kann irgendein Teil der db.
Die Funktion Ich habe mir erlaubt, diese neue Funktion zu verwenden I „UC_Words“ wie die eingebaute native Funktionen von MySQL genannt, so dass ich eine komplette Spalte wie folgt aktualisieren:
UPDATE Table_name
SET column_name = UC_Words(column_name)
Zum Einfügen der Funktionscode, ich habe das MySQL-Standard-Delimiterzeichen (;) während der Erstellung der Funktion geändert und es dann nach dem Funktionserstellungsskript wieder auf normal zurückgesetzt. Ich wollte auch, dass die Ausgabe auch in UTF8 CHARSET ist.
Funktion Schöpfung =
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 ;
Dies funktioniert eine Behandlung in einem String Versalien- ersten Buchstaben auf mehrere Wörter ausgibt.
Angenommen, Ihr MySQL-Benutzername hat ausreichende Berechtigungen - wenn nicht, und Sie können keine temporäre DB auf Ihrem persönlichen Rechner einrichten, um Ihre Tabellen zu konvertieren, dann fragen Sie Ihren Shared-Hosting-Anbieter, ob er diese Funktion für Sie einstellen wird.
danke - das tat, was ich brauchte. Ich habe vergessen zu erwähnen, dass ich zuerst auf Kleinbuchstaben setzen musste. danke – Chin