题目描述
运营团队希望将用户申请参与比赛的个人博客用户名从 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。

京公网安备 11010502036488号