题目描述

运营团队希望将用户申请参与比赛的个人博客用户名从 blog_url 字段中提取出来,并将其单独记录为一个新的字段 user_nameblog_url 字段的格式为 http:/url/<username>,其中 <username> 为用户的个人博客用户名。需要从 user_submit 表中提取 device_iduser_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