2012-09-11 4 views
8

Ho bisogno della funzionalità di initcap per i nomi delle regioni. C'è un modo per ottenere questo in MySQL?Come posso ottenere la funzionalità initcap in MySQL?

  • Africa
  • India sub continente
  • Stati Uniti West Coast
  • Europe/U.K

in questo modo i risultati possono essere? Eventuali suggerimenti? Grazie in anticipo.

+0

Vedi i commenti sul [pagina di documentazione] (http://dev.mysql.com/doc/refman/5.1/en/string-functions.html) per le funzioni di stringa. –

risposta

13

Qualche tempo fa stavo cercando una funzione initcap/ucfirst incorporata in MySQL ma sfortunatamente non riuscivo a trovare tali funzioni di stringa così ho deciso di scrivere la mia .. grazie al membro della comunità MySQL che ha corretto il bug nella mia funzione & pubblicato indietro.

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

grazie @nDudani è davvero utile !! – NIKHIL

+2

Si prega di non approvare [tale modifica suggerita] (http://stackoverflow.com/review/suggested-edits/950604). Vedi il mio commento – hims056

+0

okay, mi occuperò della prossima volta –

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

Si prega di chiarire la risposta . – Kartoch

Problemi correlati