力扣-修复表中的名字
创始人
2024-06-02 01:04:09
0

大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。

文章目录

  • 前言
  • 一、题目:1667. 修复表中的名字
  • 二、解题
    • 1.正确示范①
      • 提交SQL
      • 运行结果
    • 2.正确示范②
      • 提交SQL
      • 运行结果
    • 3.正确示范③
      • 提交SQL
      • 运行结果
    • 4.正确示范④
      • 提交SQL
      • 运行结果
    • 5.其他
  • 总结


前言


一、题目:1667. 修复表中的名字

表: Users

+----------------+---------+
| Column Name    | Type    |
+----------------+---------+
| user_id        | int     |
| name           | varchar |
+----------------+---------+

user_id 是该表的主键。
该表包含用户的 ID 和名字。名字仅由小写和大写字符组成。

编写一个 SQL 查询来修复名字,使得只有第一个字符是大写的,其余都是小写的。
返回按 user_id 排序的结果表。
查询结果格式示例如下。

输入:
Users table:
+---------+-------+
| user_id | name  |
+---------+-------+
| 1       | aLice |
| 2       | bOB   |
+---------+-------+
输出:
+---------+-------+
| user_id | name  |
+---------+-------+
| 1       | Alice |
| 2       | Bob   |
+---------+-------+

二、解题

1.正确示范①

提交SQL

select user_id,
concat(upper(left(name,1)),lower(right(name,length(name)-1))
) name
from Users
order by user_id;

运行结果

2.正确示范②

提交SQL

select user_id,
concat(upper(left(name,1)),lower(right(name,char_length(name)-1))
) name
from Users
order by user_id;

运行结果

3.正确示范③

提交SQL

select user_id,
concat(upper(substr(name,1,1)),lower(substr(name,2))) name
from Users
order by user_id;

运行结果

4.正确示范④

提交SQL

select user_id,
concat(upper(substring(name,1,1)),lower(substring(name,2))) name
from Users
order by user_id;

运行结果

5.其他


总结

整体思路就是把第一个字母通过upper大写,其余字母通过lower小写,最后再通过concat拼接起来。
正确示范①思路:
通过left(name,1)取第一个字母
通过right(name,length(name)-1)取其余字母
正确示范②思路:
将示范①中的length改为char_length
正确示范③思路:
通过substr(name,1,1)取第一个字母
通过substr(name,2)取其余字母
正确示范④思路:
通过substring(name,1,1)取第一个字母
通过substring(name,2)取其余字母


知识点:
1.upper()lower()
upper将字符串中的所有字母转换为大写,而lower将字符串中的所有字母转换为小写。
2.left()right()
左侧截取和右侧截取函数,可以用于截取字符串的一部分。left函数返回字符串左侧指定长度的字符,right函数返回字符串右侧指定长度的字符。例如,left(‘csdn’, 2)将返回’cs’,right(‘csdn’, 2)将返回’dn’。
3.length()char_length()
length()函数返回的是字符串中的字节数,而char_length()函数返回的是字符串中的字符数。在大多数情况下,这两个函数返回的结果是相同的,但是当字符串中包含多字节字符时,它们的结果可能会不同。
4.substr()substring()substrb()
substr()函数的语法是substr(str, start, length),其中str是要截取的字符串,start是起始位置,length是要截取的长度。而substring()函数的语法是substring(str, start, length),其中str、start和length的含义与substr()相同,两者可以相互替换。substrb函数是按照字节来截取字符串,而substr函数是按照字符来截取字符串。如果字符串中包含中文等多字节字符,那么使用substr函数可能会出现截取不准确的情况,此时应该使用substrb函数来截取字符串。

相关内容

热门资讯

中证A500ETF摩根(560... 8月22日,截止午间收盘,中证A500ETF摩根(560530)涨1.19%,报1.106元,成交额...
A500ETF易方达(1593... 8月22日,截止午间收盘,A500ETF易方达(159361)涨1.28%,报1.104元,成交额1...
何小鹏斥资约2.5亿港元增持小... 每经记者|孙磊    每经编辑|裴健如 8月21日晚间,小鹏汽车发布公告称,公司联...
中证500ETF基金(1593... 8月22日,截止午间收盘,中证500ETF基金(159337)涨0.94%,报1.509元,成交额2...
中证A500ETF华安(159... 8月22日,截止午间收盘,中证A500ETF华安(159359)涨1.15%,报1.139元,成交额...
科创AIETF(588790)... 8月22日,截止午间收盘,科创AIETF(588790)涨4.83%,报0.760元,成交额6.98...
创业板50ETF嘉实(1593... 8月22日,截止午间收盘,创业板50ETF嘉实(159373)涨2.61%,报1.296元,成交额1...
港股异动丨航空股大幅走低 中国... 港股航空股大幅下跌,其中,中国国航跌近7%表现最弱,中国东方航空跌近5%,中国南方航空跌超3%,美兰...
电网设备ETF(159326)... 8月22日,截止午间收盘,电网设备ETF(159326)跌0.25%,报1.198元,成交额409....
红利ETF国企(530880)... 8月22日,截止午间收盘,红利ETF国企(530880)跌0.67%,报1.034元,成交额29.0...