sql >> Database >  >> RDS >> Mysql

Hoe kan ik initcap-functionaliteit in MySQL bereiken?

Enige tijd geleden was ik op zoek naar een ingebouwde initcap/ucfirst-functie in MySQL, maar kon dergelijke tekenreeksfuncties helaas niet vinden, dus besloot ik mijn eigen te schrijven.. met dank aan het MySQL-communitylid dat de bug in mijn functie heeft gecorrigeerd en het terug heeft gepost .

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. php artisan migreren gooien [BOB-uitzondering] Kon stuurprogramma niet vinden - Laravel gebruiken

  2. PG::InvalidParameterValue:ERROR:ongeldige waarde voor parameter client_min_messages:paniek

  3. Retourneer de lokale servernaam in SQL Server met @@SERVERNAME

  4. SQL-tijdsverschil tussen twee datums resulteert in uu:mm:ss