小工具知识网

当前位置: 首页 > 行业知识 > 高频 sql 50题(基础7)

行业知识

高频 sql 50题(基础7)

2026-11-12 23:10:52 来源:互联网转载

七、高级字符串函数 / 正则表达式 / 子句

1.修复表中的名字

题目描述

��

代码编写

做法一:

select user_id,concat(upper(substring(name,1,1)),lower(substring(name,2))) as name from Usersorder by user_id

Tip:

concat( ) 函数,将多个字符串连接成一个字符串,返回结果为连接参数产生的字符串。

substring( )函数,用来截取字符串的, 根据参数个数不同,含义也不同,如上题所示,

substring(name,1,1 )表示截取字符串name的第一个字符,两个数字分别表示开始位置和结束位置,而subsring(name,2)表示截取字符串name第二个字符直至结束。

做法二:

select user_id,concat( UPPER(LEFT(name,1)), LOWER (RIGHT(name,length(name)-1))) AS name from Users order by user_id 

left( ) 函数,left(str,length)从字符串左边截取指定长度的字符串

right( ) 函数,left(str,length)从字符串左边截取指定长度的字符串

如上题所示,将字符串name的第一个字符截取出来转成大写,将剩下的部分截取出来转成小写。

2.患某种疾病的患者

题目描述

 

代码编写

I 类糖尿病患者的满足条件:

  1. ^DIAB1 --- DIAB1 开头
  2. xxx DIAB1 --- DIAB1 任意字符空格DIAB1开头 

做法一(正则):

select * from Patientswhere conditions REGEXP '^DIAB1|\sDIAB1'

 思路:

1.匹配第一种情况,表达式为^DIAB1,其中^:表示一个字符串或行的开头

2.匹配第二种情况,表达式为\\sDIAB1,其中\s:表示匹配一个空白字符(空格,tab,换页符等)(注意:反斜杠用于转义句点字符,句点字符在正则表达式中具有特殊含义,需要转义反斜杠本身,因此需要使用\\。)

3.| 是或者,当字符满足上述两种情况之一,即达到匹配要求。

做法二(不用正则):

select * from Patientswhere conditions like 'DIAB1%' or conditions like '% DIAB1%'

思路:

利用模糊匹配 like(),搜索包含的对应子串。

1.%:表示任意单或多个字符,匹配任意类型和长度的字符

2._:表示任意单个字符,匹配单个任意类型的字符

3.删除重复的电子邮箱

题目描述

 

代码编写

delete p1 from Person p1,Person p2where p1.email=p2.email and p1.id>p2.id

4.第二高的薪水

题目描述

 

代码编写

select if(max(series)=100

7.查找拥有有效邮箱的用户

题目描述

 

代码编写

select * from Userswhere mail regexp "^[a-zA-Z][a-zA-Z0-9_.-]*\@leetcode\.com$"

Tip:

正则表达式提供各种功能,以下是一些相关功能:

1. ^:表示一个字符串或行的开头1.[a-z]:表示一个字符范围,匹配从 a 到 z 的任何字符。

2. [0-9]:表示一个字符范围,匹配从 0 到 9 的任何字符。

3. [a-zA-Z]:这个变量匹配从 a 到 z 或 A 到 Z 的任何字符。请注意,你可以在方括号内指定的字符范围的数量没有限制,您可以添加想要匹配的其他字符或范围。

4. [^a-z]:这个变量匹配不在 a 到 z 范围内的任何字符。请注意,字符 ^ 用来否定字符范围,它在方括号内的含义与它的方括号外表示开始的含义不同。

5. [a-z]*:表示一个字符范围,匹配从 a 到 z 的任何字符 0 次或多次。

6. [a-z]+:表示一个字符范围,匹配从 a 到 z 的任何字符 1 次或多次。

7. .:匹配任意一个字符。

8. \.:表示句点字符。请注意,反斜杠用于转义句点字符,因为句点字符在正则表达式中具有特殊含义。还要注意,在许多语言中,你需要转义反斜杠本身,因此需要使用\\.。

9. $:表示一个字符串或行的结尾。

链接:https://leetcode.cn/problems/find-users-with-valid-e-mails/solutions/2366182/cha-zhao-yong-you-you-xiao-you-xiang-de-gn7ym/

来源:力扣(LeetCode)

 

上一篇:系统分区工具详解,优化硬盘布局,轻松管理存储空间!

下一篇:Dependency not found解决方案(Springboot,绝对有效)