[每日一练]修复表中的名字
#该题目来源于力扣:
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 |
+---------+-------+
思路流程:
我们需要将字符串开头的第一个字符变成大写,其他字符变成小写。由于MySQL中没有之间可以变换大小写的代码,所以我们需要分别将两者进行代码变换,然后进行联合。需要用到的代码如下:
LEFT(str,len)从字符串左开始取len个值
RIGHT(str,len)从字符串右开始取len个值
length(str,len)返回字符串str的len长度
concat(value1......)连接多个字符串
UPPER()字符串大写
LOWER()字符出小写
字符串向左娶一位,进行大写转换,字符串从右开始,取n-1个字符,进行小写转换,最后将他俩进行连接即可。
最后按照id列进行升序排序
代码实现:
# Write your MySQL query statement below
SELECT user_id ,
concat(
upper(left(name,1)),
lower(right(name,length(name)-1))
) as name
from Users
ORDER BY user_id ASC