2012-09-11 11 views
8

Ich brauche die Funktionalität von initcap für die Regionsnamen. Gibt es eine Möglichkeit, dies in MySQL zu erreichen?Wie kann ich die initcap-Funktionalität in MySQL erreichen?

  • Afrika
  • Indien Vorkontinent
  • US-Westküste
  • Europe/U.K.

auf diese Weise die Ergebnisse sein können? Irgendwelche Vorschläge? Danke im Voraus.

+0

Siehe die Kommentare auf der [Dokumentationsseite] (http://dev.mysql.com/doc/refman/5.1/en/string-functions.html) für String-Funktionen. –

Antwort

13

Irgendwann wieder war ich auf der Suche nach einer eingebauten initcap/ucfirst-Funktion in MySQL, aber konnte leider nicht finden, so string-Funktionen so entschieden, meine eigenen zu schreiben .. Dank der MySQL Community-Mitglied, der den Fehler in meiner Funktion korrigiert & hat es zurückgeschickt.

DELIMITER $$ 

DROP FUNCTION IF EXISTS `test`.`initcap`$$ 

CREATE FUNCTION `initcap`(x char(30)) RETURNS char(30) CHARSET utf8 
BEGIN 
SET @str=''; 
SET @l_str=''; 
WHILE x REGEXP ' ' DO 
SELECT SUBSTRING_INDEX(x, ' ', 1) INTO @l_str; 
SELECT SUBSTRING(x, LOCATE(' ', x)+1) INTO x; 
SELECT CONCAT(@str, ' ', CONCAT(UPPER(SUBSTRING(@l_str,1,1)),LOWER(SUBSTRING(@l_str,2)))) INTO @str; 
END WHILE; 
RETURN LTRIM(CONCAT(@str, ' ', CONCAT(UPPER(SUBSTRING(x,1,1)),LOWER(SUBSTRING(x,2))))); 
END$$ 

DELIMITER ; 


Usage: 

select initcap('This is test string'); 
+0

danke @nDudani es wirklich nützlich !! – NIKHIL

+2

Bitte bestätigen Sie [diese vorgeschlagene Änderung] nicht (http://stackoverflow.com/review/suggested-edits/950604). Siehe meinen Kommentar. – hims056

+0

okay, werde ich beim nächsten Mal kümmern –

0
DELIMITER $$ 

DROP FUNCTION IF EXISTS `test`.`initcap`$$ 

CREATE FUNCTION `initcap`(x char(30)) RETURNS char(30) CHARSET utf8 
BEGIN 
SET @str=''; 
SET @l_str=''; 
WHILE x REGEXP ' ' DO 
SELECT SUBSTRING_INDEX(x, ' ', 1) INTO @l_str; 
SELECT SUBSTRING(x, LOCATE(' ', x)+1) INTO x; 
SELECT CONCAT(@str, ' ', CONCAT(UPPER(SUBSTRING(@l_str,1,1)),LOWER(SUBSTRING(@l_str,2)))) INTO @str; 
END WHILE; 
RETURN LTRIM(CONCAT(@str, ' ', CONCAT(UPPER(SUBSTRING(x,1,1)),LOWER(SUBSTRING(x,2))))); 
END$$ 

DELIMITER ; 
0
CREATE FUNCTION `upperfirst`(x varchar(255)) RETURNS varchar(255) CHARSET latin1 

RETURN concat(upper(substring(x,1,1)),lower(substring(x,2))); 
+1

Bitte klären Sie Ihre Antwort . – Kartoch

Verwandte Themen