携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第21天,点击查看活动详情
一、题目
表: Users
+----------------+---------+
| Column Name | Type |
+----------------+---------+
| user_id | int |
| name | varchar |
+----------------+---------+
user_id 是该表的主键。 该表包含用户的 ID 和名字。名字仅由小写和大写字符组成。
编写一个 SQL 查询来修复名字,使得只有第一个字符是大写的,其余都是小写的。
返回按 user_id 排序的结果表。
查询结果格式示例如下。
示例 1:
输入: Users table:
+---------+-------+
| user_id | name |
+---------+-------+
| 1 | aLice |
| 2 | bOB |
+---------+-------+
输出:
+---------+-------+
| user_id | name |
+---------+-------+
| 1 | Alice |
| 2 | Bob |
+---------+-------+
来源:力扣(LeetCode)
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
二、解题思路
创建数据表
根据题意创建数据表,设置数据类型
CREATE TABLE Users(
user_id INT PRIMARY KEY,
NAME VARCHAR(20)
);
INSERT INTO Users VALUES
(1,"aLice"),
(2,"bOB");
- 显示数据表
使用的函数
根据题意只有第一个字符是大写的,其余都是小写的。这里需要使用几个函数
/*
concat(str1, str2,....)
功能:将多个字符串连接成一个字符串
返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。
UPPER()
功能:将字符串中所有的字母字符转换为大写
LOWER()
功能:将字符串中所有的字母字符转换为小写
LEFT()
是一个字符串函数
返回具有指定长度的字符串的左边部分。
接受两个参数:Str和length
str: 一个字符串
length: 想要截取的长度,是一个正整数。
SUBSTR()
返回需要截取的字符串
接受两个参数,Str和开始位置
*/
SELECT CONCAT(user_id, NAME) AS str FROM Users;
SELECT UPPER(NAME) NAME FROM Users;
SELECT LOWER(NAME) NAME FROM Users;
SELECT LEFT(NAME,1) NAME FROM Users;
SELECT SUBSTR(NAME,2) AS NAME FROM Users;
思路
- 截取name值的第一位LEFT(NAME,1)
- 截取name值的第二位及后面的值SUBSTR(NAME,2)
- 设置name第一位值为大写参数UPPER(LEFT(NAME,1))
- 设置name第一位后边的值均为小写LOWER(SUBSTR(NAME,2))
- 将name的大写和小写拼接到一起CONCAT(UPPER(LEFT(NAME,1)), LOWER(SUBSTR(NAME,2)))
- 返回按 user_id 排序的结果表,所以ORDER BY user_id;
具体执行语句
SELECT
user_id,
CONCAT(UPPER(LEFT(NAME,1)),LOWER(SUBSTR(NAME,2))) AS NAME
FROM
Users
ORDER BY user_id;
三、执行结果
结果显示
四、总结
从这道题上学习到了concat()、UPPER()、LOWER()、LEFT()、SUBSTR()的使用,对于初学者来讲帮助很大。