使用query将数据库中所有值中的第一个字母大写

siv3szwd  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(366)

我在数据库中有一行,如果我写这个查询

select * from table1;

下面的查询将给出所需的结果

james anderson
stuart broad

我能问一下这个词的第一个字母应该大写在哪里吗
i、 e输出必须是
詹姆斯·安德森
斯图亚特·布罗德
已尝试以下查询

UPDATE people_table SET full_name = CONCAT(UPPER(SUBSTR(full_name,1,1)),LOWER(SUBSTR(full_name,2)));

此查询只生成行的第一个大写单词。

46qrfjad

46qrfjad1#

我以前见过这种东西,它被称为initcap函数。
它不是一个内置函数,但请查看此链接以获取一些mysql示例。
从下面粘贴溶液:

DELIMITER $$

DROP FUNCTION IF EXISTS `test`.`initcap`$$

CREATE FUNCTION `initcap`(x char(30)) RETURNS char(30) CHARSET utf8
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 ;

用法:

select initcap('This is test string');

我假设您熟悉用户定义的函数,但要在更新中使用它,有点像:

update myTable set name = initcap(name) where ...

希望这有帮助!

相关问题