SQL复习笔记

本文介绍了MySQL中的SUBSTRING_INDEX函数,用于从字符串中提取特定分隔符前后的信息。通过示例展示了如何利用该函数从用户资料中提取身高、体重等信息,以及在面对复杂需求时如何进行嵌套查询。同时,给出了实际场景的应用,如从用户提交的博客URL中抽取用户名,以及统计比赛申请者的年龄分布。
摘要由CSDN通过智能技术生成

文本函数-substring_index

substring_index('http/a/1/s','/',1)

SUBSTRING_INDEX函数用于将字符串依据某个指定分隔符进行切分,并返回指定位置分隔符前的字符。(字段分割符,位置)

假如现在有一列字段以字符串记录了用户的身高体重和性别,如 ‘180,78kg,male',现 在想要分别取出用户的身高和体重,应该怎么做呢?这时就可以用到 SUBSTRING_INDEX函数,指定逗号作为分隔符,如果想要返回身高的话,位置填1,即 可得到相应结果。

select SUBSTRING_INDEX('180,78kg',',','1') as height

取身高相对简单,但如果想要取出体重应该怎么做呢?如果使用下面的代码,结果会返回第二个分隔符前的所有字符,结果为’180,78kg’,会多取出身高的信息。

select SUBSTRING_INDEX('180,78kg',',’,'2') as height

这种情况下可以嵌套一次SUBSTRING_INDEX查询,负数位置代表从后向前取,-1代表最后一位,第二层嵌套相当于是取出’180,78kg'的最后一个逗号后的字符,得到我们想要的体重数据

select SUBSTRING_INDEX(SUBSTRING_INDEX('180,78kg',',’,'2’),’,’,-1) as height

题目:对于申请参与比赛的用户,blog_url字段中url字符后的字符串为用户个人博客的用户名,现在运营想要把用户的个人博客用户字段提取出单独记录为一个新的字段,请取出所需数据。

示例:user_submit

device_idprofileblog_url
2138180cm,75kg,27,malehttp:/ur/bisdgboy777
3214165cm,45kg,26,femalehttp:/url/dkittycc
6543178cm,65kg,25,malehttp:/ur/tigaer
4321171 cm,55kg,23,femalehttp:/url/uhksd
2131168cm,45kg,22,femalehttp:/url/sydney

根据示例,你的查询应返回以下结果:

device_iduser_name
2138bisdgboy777
3214dkittycc
6543tigaer
4321uhsksd
2131sydney
select
  device_id,
  substring_index(blog_url, '/', -1) as user_name
from
  user_submit

题目2

题目:现在运营举办了一场比赛,收到了一些参赛申请,表数据记录形式如下所示,现在运营想要统计每个年龄的用户分别有多少参赛者,请取出相应结果

示例:user_submit

device_idprofileblog_url
2138180cm,75kg,27,malehttp:/ur/bigboy777
3214165cm,45kg,26,femalehttp:/url/kittycc
6543178cm,65kg,25,malehttp:/url/tiger
4321171cm,55kg,23,femalehttp:/url/uhksd
2131168cm,45kg,22,femalehttp:/url/sydney

根据示例,你的查询应返回以下结果:

agenumber
271
261
251
231
221

select
  substring_index(substring_index(profile, ',', 3), ',', -1) as age,
  count(device_id)
from
  user_submit
group by
  age

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值