sql >> Databáze >  >> RDS >> Mysql

Jak mohu dosáhnout funkčnosti initcap v MySQL?

Někdy zpět jsem hledal vestavěnou funkci initcap/ucfirst v MySQL, ale bohužel jsem nemohl najít takové řetězcové funkce, takže jsem se rozhodl napsat svou vlastní.. díky členovi komunity MySQL, který opravil chybu v mé funkci a poslal ji zpět .

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');


  1. Jak mohu přepsat tento dotaz, abych se vyhnul chybě:Nemůžete zadat cílovou tabulku pro aktualizaci v klauzuli FROM

  2. Jak získat celé číslo z MySQL jako celé číslo v PHP?

  3. Jak funguje funkce LPAD() v MySQL

  4. Klauzule WHERE na datovém typu SQL Server Text