[每日一练]修复表中的名字

#该题目来源于力扣:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值