mysql - 使用查询将数据库中所有值中的字母的第一个单词变为大写

标签 mysql sql

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

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/

相关文章:

php - 如何将这两个查询合并到一个 INSERT INTO 中?

mysql - 找出 SQL 中的 AVG 列

php - MySql 更新上的投票系统将不起作用

mysql - 使用命令行自动运行 INSERT 语句

java - Spring Jdbc绑定(bind)java.sql.timestamp到oracle日期问题

mysql - SQL:根据条件加入和计数

mysql - 按特定值排序

php - 使用 PHP 类时的 SQL 查询效率

php - MySQL 在使用变量后插入时触发语法错误

php - 单片模型