欢迎光临
我们一直在努力

mysql 第六篇 文件函数

文件函数

SUBSTRING_INDEX

SELECT
SUBSTRING_INDEX(profile, ',', -1) AS gender,
COUNT(*) AS number
FROM
user_submit
GROUP BY
SUBSTRING_INDEX(profile, ',', -1);

解析:

1. SUBSTRING_INDEX(profile, ',', -1)

  • 这个函数的作用是从字符串中提取一部分

  • 参数1:profile – 要处理的字段(表中的列)

  • 参数2:',' – 按照逗号分隔

  • 参数3:-1 – 取最后一个部分

  • 效果:"180cm,75kg,27,male" → "male"

  • SUBSTRING_INDEX函数基础

    这个函数就像切蛋糕:

    SUBSTRING_INDEX(字符串, 分隔符, 数字)

    规则:

  • 如果数字是正数:从左往右数,取前N块

  • 如果数字是负数:从右往左数,取后N块

2. AS gender

  • 给提取出来的性别数据起个别名叫gender

3. COUNT(*) AS number

  • 统计每个性别有多少条记录

  • AS number:给统计结果起个别名叫number

4. GROUP BY SUBSTRING_INDEX(profile, ',', -1)

  • 按照性别分组,相同性别的记录会分到一组

  • 这样COUNT(*)就能分别统计每个性别的人数了

例2

SELECT
device_id,
SUBSTRING_INDEX(blog_url, '/', -1) AS user_name
FROM
user_submit;

1.SUBSTRING_INDEX(blog_url, '/', -1)

  • 这个函数用于从字符串中提取指定分隔符的部分

  • 第一个参数:blog_url – 要处理的字段

  • 第二个参数:'/' – 按照斜杠进行分隔

  • 第三个参数:-1 – 取最后一个部分(负号表示从后面开始数)

  • 效果:

    • "http:/url/bisdgboy777" → "bisdgboy777"

    • "http:/url/dkittycc" → "dkittycc"

2. AS user_name

  • 给提取出来的用户名起个别名叫user_name

SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX(profile, ',', 3), ',', -1) AS age,
COUNT(*) AS number
FROM
user_submit
GROUP BY
SUBSTRING_INDEX(SUBSTRING_INDEX(profile, ',', 3), ',', -1)
ORDER BY
age DESC;

1. SUBSTRING_INDEX(SUBSTRING_INDEX(profile, ',', 3), ',', -1)

这是一个嵌套函数,分两步提取年龄:

第一步: SUBSTRING_INDEX(profile, ',', 3)

  • 按逗号分隔profile字段

  • 取前3部分

  • 效果:"180cm,75kg,27,male" → "180cm,75kg,27"

第二步: SUBSTRING_INDEX(第一步结果, ',', -1)

  • 对上一步的结果再按逗号分隔

  • 取最后一部分

  • 效果:"180cm,75kg,27" → "27"

合并效果:直接提取出年龄数字

2. AS age

  • 给提取出来的年龄数据起个别名叫age

3. COUNT(*) AS number

  • 统计每个年龄有多少条记录

  • AS number:给统计结果起个别名叫number

4. GROUP BY …

  • 按照提取出来的年龄分组,相同年龄的记录会分到一组

5. ORDER BY age DESC

  • 按照年龄降序排列(从大到小)

赞(0)
未经允许不得转载:171主机测评 » mysql 第六篇 文件函数
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址