如果我写这个查询,我在数据库中有一行。
select * from table1;下面的查询将提供所需的结果
james anderson
stuart broad我能问一下这个单词的第一个字母在大写字母中的位置吗?
也就是说,输出必须是
James Anderson
Stuart B道
已尝试使用以下查询
UPDATE people_table SET full_name = CONCAT(UPPER(SUBSTR(full_name,1,1)),LOWER(SUBSTR(full_name,2)));此查询只生成大写行的第一个单词。
发布于 2018-07-07 10:24:08
我以前遇到过这样的事情,它被称为INITCAP函数。
它不是内置的函数,而是一些mysql示例的check this link out。
粘贴了下面的解决方案:
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 ...希望这能帮上忙!
https://stackoverflow.com/questions/51221902
复制相似问题