题目:
表: 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 |
+---------+-------+
解题思路:
字符串的处理
字符串拆成(首字母+后续字母)
(首字母+后续字母):
CONCAT(LEFT(),SUBSTRING())
LEFT(str,n)
返回从字符串表达式的开始(最左位置)开始的指定数量(n)的字符。
SUBSTRING(str,x,y)
str代表字符串;x代表是从第几位开始截取;y代表截取几位数
SUBSTR (str, pos)
str代表字符串;pos代表从第 位置开始到结尾的所有字符串
故CONCAT(LEFT(name,1),SUBSTRING(NAME,2))
代码:
SELECT user_id , CONCAT(LEFT(name,1),SUBSTRING(name,2)) name
FROM Users
结果:
{"headers": ["user_id", "name"], "values": [[1, "aLice"], [2, "bOB"]]}
将首字母大写,后续字母小写:
UCASE(string)
转换为大写
LCASE(string)
转换为小写
代码:
SELECT user_id,concat(UCASE(LEFT(name,1)),LCASE(SUBSTRING(name,2))) name
FROM Users
结果:
{"headers": ["user_id", "name"], "values": [[1, "Alice"], [2, "Bob"]]}
提交,发现有问题:
没有按照user_id顺序输出,加上ORDER BY 即可
SELECT user_id , CONCAT(UCASE(LEFT(name,1)),LCASE(SUBSTRING(name,2))) name
FROM Users ORDER BY user_id