1667. 修复表中的名字 - 力扣(LeetCode)
表: Users
+----------------+---------+ | Column Name | Type | +----------------+---------+ | user_id | int | | name | varchar | +----------------+---------+ user_id 是该表的主键(具有唯一值的列)。 该表包含用户的 ID 和名字。名字仅由小写和大写字符组成。
编写解决方案,修复名字,使得只有第一个字符是大写的,其余都是小写的。
返回按 user_id
排序的结果表。
返回结果格式示例如下。
示例 1:
输入: Users table: +---------+-------+ | user_id | name | +---------+-------+ | 1 | aLice | | 2 | bOB | +---------+-------+ 输出: +---------+-------+ | user_id | name | +---------+-------+ | 1 | Alice | | 2 | Bob | +---------+-------+
这段 SQL 代码的作用是将一个字符串的首字母转换为大写,其余字母转换为小写,从而实现首字母大写的效果。我们可以逐步解析这段代码的含义:
LEFT(name, 1): 这部分提取
name
字符串的第一个字符(即首字母)。UPPER(LEFT(name, 1)): 将提取到的首字母转换为大写。
SUBSTRING(name, 2): 这部分提取
name
字符串从第二个字符开始的所有字符。LOWER(SUBSTRING(name, 2)): 将从第二个字符开始的所有字符转换为小写。
CONCAT(...): 最后,
CONCAT
函数将大写的首字母和小写的其余部分连接在一起,形成一个新的字符串。示例
假设
name
的值为"jOhn"
,那么:
LEFT(name, 1)
会返回"j"
UPPER(LEFT(name, 1))
会返回"J"
SUBSTRING(name, 2)
会返回"Ohn"
LOWER(SUBSTRING(name, 2))
会返回"ohn"
CONCAT(UPPER(LEFT(name, 1)), LOWER(SUBSTRING(name, 2)))
会返回"John"
总结
这段代码可以用于格式化名字,使其符合常见的“首字母大写,其余小写”的格式。
select user_id,
CONCAT(Upper(left(name,1)),Lower(substring(name,2))) name
from users
order by user_id