Mysql
 sql >> база данни >  >> RDS >> Mysql

Как мога да постигна функционалност initcap в MySQL?

Някога назад търсех вградена функция initcap/ucfirst в MySQL, но за съжаление не можах да намеря такива низови функции, така че реших да напиша моя собствена.. благодаря на члена на общността на 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL диакритично нечувствително търсене (испански акценти)

  2. Получаване на съобщение SQLEXCEPTION в MySQL процедури

  3. MySql избира динамични стойности на редове като имена на колони

  4. Как да задам пълен sql дата и час с помощта на java, а не само датата?

  5. Проверете дали редът съществува в базата данни, преди да го вмъкнете