我在数据库中有一行,如果我写这个查询
select * from table1;
下面的查询会给出想要的结果
james anderson
stuart broad
我可以查询单词的第一个字母应该是大写吗
即输出必须是
J詹姆斯安德森
S tuart B路
已尝试使用以下查询
UPDATE people_table SET full_name = CONCAT(UPPER(SUBSTR(full_name,1,1)),LOWER(SUBSTR(full_name,2)));
此查询仅产生大写的行的第一个单词。
最佳答案
我以前遇到过这种事情,它被称为 INITCAP 函数。
这不是内置函数,而是 check this link out对于一些 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 ...
希望对您有所帮助!
关于mysql - 使用查询将数据库中所有值中的字母的第一个单词变为大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51221902/