首页 > 试题广场 >

提取博客URL中的用户名

[编程题]提取博客URL中的用户名
  • 热度指数:131312 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
题目:对于申请参与比赛的用户,blog_url字段中url字符后的字符串为用户个人博客的用户名,现在运营想要把用户的个人博客用户字段提取出单独记录为一个新的字段,请取出所需数据。

示例:user_submit
device_id
profile
blog_url
2138 180cm,75kg,27,male
http:/ur/bisdgboy777
3214 165cm,45kg,26,female
http:/url/dkittycc
6543 178cm,65kg,25,male
http:/ur/tigaer
4321 171 cm,55kg,23,female
http:/url/uhksd
2131 168cm,45kg,22,female
http:/url/sydney

根据示例,你的查询应返回以下结果:
device_id
user_name
2138 bisdgboy777
3214 dkittycc
6543 tigaer
4321 uhsksd
2131 sydney

示例1

输入

drop table if exists user_submit;
CREATE TABLE `user_submit` (
`id` int NOT NULL,
`device_id` int NOT NULL,
`profile` varchar(100) NOT NULL,
`blog_url` varchar(100) NOT NULL
);
INSERT INTO user_submit VALUES(1,2138,'180cm,75kg,27,male','http:/url/bisdgboy777');
INSERT INTO user_submit VALUES(1,3214,'165cm,45kg,26,female','http:/url/dkittycc');
INSERT INTO user_submit VALUES(1,6543,'178cm,65kg,25,male','http:/url/tigaer');
INSERT INTO user_submit VALUES(1,4321,'171cm,55kg,23,female','http:/url/uhsksd');
INSERT INTO user_submit VALUES(1,2131,'168cm,45kg,22,female','http:/url/sysdney');

输出

2138|bisdgboy777
3214|dkittycc
6543|tigaer
4321|uhsksd
2131|sysdney
SELECT device_id,
substring_index(blog_url, '/',-1)  AS user_name  
FROM user_submit
substring_index 分割即可,取最后一个
发表于 2021-12-01 15:15:01 回复(0)
更多回答
各位真的是脑子聪明,思路广广
发表于 2021-11-07 20:32:27 回复(0)
利用replace 替换掉无效数据
select 
    device_id
    ,replace(blog_url,'http:/url/','')
from user_submit

发表于 2021-08-26 13:45:23 回复(10)
法1:字符串函数
select 
device_id,
substring_index(blog_url,'/',-1) as user_name
# substr(blog_url,11) as user_name
from user_submit;

法2:替换函数
select 
device_id,
replace('http:/url/','') as user_name
from user_submit
;

法3:trim函数
select 
device_id ,
trim('http:/url/' from blog_url) as user_name 
from user_submit
发表于 2021-11-09 16:43:16 回复(11)
熟悉文本操作函数
1.replace
2.substr
3.substring_index
4.trim

代码

-- 方法1 替换
-- select device_id, replace(blog_url,'http:/url/','') as user_name
-- from user_submit;

-- 方法2 截取
-- select device_id, substr(blog_url,11,length(blog_url)-10) as user_name
-- from user_submit;

-- 方法3 删除
-- select device_id, trim('http:/url/' from blog_url) as user_name
-- from user_submit;

-- 方法4 字段切割
select device_id, substring_index(blog_url,'/',-1) as user_name
from user_submit;

发表于 2022-03-29 18:22:51 回复(7)
为什么大家都说用url替换啊   字段里的信息 有些分明是 ur  有的是url啊......
发表于 2022-03-09 20:56:25 回复(8)
SELECT device_id,SUBSTR(blog_url,11) as user_name from user_submit

发表于 2021-08-27 10:04:27 回复(5)
select device_id, SUBSTRING_INDEX(blog_url,'/',-1) as user_name
from user_submit;
发表于 2021-08-27 17:50:22 回复(0)

select device_id,SUBSTRING_INDEX(blog_url,'/',-1) user_name
from user_submit;
1.字符截取,substring_index()

发表于 2021-10-11 12:55:23 回复(2)
select device_id,substring_index(blog_url,'/',-1) user_name
from user_submit
截取最后一个‘/’符号之后的字符串


发表于 2022-05-01 04:42:14 回复(2)
select device_id , substr(blog_url,11)
from user_submit

我觉得这样更简单
发表于 2021-10-07 21:56:08 回复(2)
select device_id ,TRIM('http:/url/' from blog_url) as user_name from user_submit;
发表于 2021-09-27 17:25:39 回复(1)

SELECT
DISTINCT device_id,
SUBSTRING(blog_url,11) as user_name
FROM user_submit

发表于 2021-08-26 17:35:02 回复(2)
这道题目我们需要解析出 url/之后的字段,可以结合之前学过的字符串截取函数
substring和字符串定位函数instr进行,使用instr定位字符'url/‘首次出现的位置,即可
得字符’u’在字符串中的位置,该位置再往后4个字符就是我们需要的用户名开始的位
置,之后利用substring截取该字符后的所有字符串即可得到想要的结果。
发表于 2021-08-25 12:05:12 回复(3)
select
    device_id,
    substring_index (blog_url, '/', -1) as user_name
from
    user_submit;

发表于 2023-03-22 20:04:02 回复(0)
#截取方法 采用 SUBSTRING_INDEX函数 
#语法:SUBSTRING_INDEX(字段,符号,序号) 
#序号:整数从左到右 负数右到左
SELECT device_id,
SUBSTRING_INDEX(blog_url,"/",-2) as user_name 
FROM user_submit

# 外:如果想获取 链接中url  思路 http:/url/bisdgboy777 
#先从右数2个=url/bisdgboy777 
# 然后在去从左数1=http: 
SELECT device_id,
SUBSTRING_INDEX(SUBSTRING_INDEX(blog_url,"/",-2),"/",1) as user_name 
FROM user_submit
-- 鄙人的表达可能有点瑕疵

发表于 2022-11-23 12:07:48 回复(1)
select device_id,substring_index(blog_url,'/',-1) user_name 
from user_submit;
发表于 2022-07-19 18:59:22 回复(0)
select device_id,substring_index(blog_url,'/',-1) user_name
from user_submit


发表于 2023-09-01 18:44:02 回复(1)

【分类】:字符串截取函数

分析思路

难点:

1.如何截取出url中的用户名

如何截取出url中的用户名

  • [使用]:substring_index(按照分隔符截取子字符串)

扩展

前往查看:MySQL 字符串截取

最终结果

select 查询结果 [设备ID;substring_index(字段) as 用户名称]
from 从哪张表中查询数据[user_submit]

求解代码

select
    device_id,
    substring_index(blog_url, '/', -1) as user_name
from user_submit
发表于 2022-11-23 16:00:51 回复(0)
方法一:
select 
  device_id,
  substring_index(blog_url,'/',-1) as user_name
from
  user_submit

方法二:
select
  device_id,
  replace(blog_url,'http:/url/','') as user_name
from
  user_submit

方法三:
select
  device_id,
  trim('http:/url/' from blog_url) as user_name
from
  user_submit
发表于 2022-09-20 11:44:26 回复(0)
发表于 2022-07-19 15:21:11 回复(0)

问题信息

难度:
271条回答 1783浏览

热门推荐

通过挑战的用户

查看代码