题目描述
运营团队希望将用户申请参与比赛的个人博客用户名从 blog_url
字段中提取出来,并将其单独记录为一个新的字段 user_name
。blog_url
字段的格式为 http:/url/<username>
,其中 <username>
为用户的个人博客用户名。需要从 user_submit
表中提取 device_id
和 user_name
,并按照指定格式输出结果。
解题思路
- 首先,理解数据结构,
blog_url
的格式为http:/url/<username>
,需要从中提取<username>
部分。 - 接着,使用 MySQL 的
SUBSTRING_INDEX
函数,通过SUBSTRING_INDEX(blog_url, '/', -1)
获取blog_url
中最后一个/
之后的部分,即用户名。 - 最后,选择
device_id
和提取出的user_name
,并按device_id
升序排列,以确保输出顺序一致。
SQL 查询
-- 从 blog_url 中提取用户名,并选择 device_id 和 user_name
SELECT
device_id,
SUBSTRING_INDEX(blog_url, '/', -1) AS user_name -- 提取 blog_url 中最后一个 '/' 后的字符串作为 user_name
FROM
user_submit
ORDER BY
device_id; -- 按 device_id 升序排列结果
代码解释
SUBSTRING_INDEX(blog_url, '/', -1) AS user_name
:SUBSTRING_INDEX
函数用于根据指定的分隔符/
截取字符串。- 参数说明:
blog_url
:要处理的字符串字段。'/'
:分隔符。-1
:表示从字符串的右侧开始截取,第一个出现的分隔符后面的所有内容。
- 该表达式提取出
blog_url
字段中最后一个/
后的部分,即用户名,并将其命名为user_name
。