sql >> データベース >  >> RDS >> Mysql

MySQLでinitcap機能を実現するにはどうすればよいですか?

    しばらく前に、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');
    


    1. T-SQLを使用して区切り文字を使用して文字列を分割するにはどうすればよいですか?

    2. PDOを使用してMySQLから数値型を取得するにはどうすればよいですか?

    3. OracleのJSON_VALUE()関数

    4. DockerコンテナへのPostgreSQLのデプロイ