कुछ समय पहले मैं MySQL में एक अंतर्निहित initcap/ucfirst फ़ंक्शन की तलाश में था, लेकिन दुर्भाग्य से ऐसे स्ट्रिंग फ़ंक्शन नहीं मिल सके, इसलिए मैंने अपना खुद का लिखने का फैसला किया .. MySQL समुदाय के सदस्य को धन्यवाद जिन्होंने मेरे फ़ंक्शन में बग को ठीक किया और इसे वापस पोस्ट किया ।
DELIMITER $$
DROP FUNCTION IF EXISTS `test`.`initcap`$$
CREATE FUNCTION `initcap`(x char(30)) RETURNS char(30) CHARSET utf8
READS SQL DATA
DETERMINISTIC
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');