我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【MySQL】substring_index 函数详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【MySQL】substring_index 函数详解

在这里插入图片描述

【MySQL】substring_index 函数详解

命令格式

string substring_index(string <str>, string <separator>, int <count>)

命令说明

截取字符串strcount个分隔符之前的字符串。如果count为正,则从左边开始截取。如果count为负,则从右边开始截取。此函数为MaxCompute 2.0扩展函数。

参数说明

  • str:必填。STRING类型。待截取的字符串。
  • separator:必填。STRING类型的分隔符。
  • count:必填。INT类型。指定分隔符位置。

返回值说明

返回STRING类型。如果任一输入参数值为NULL,返回NULL。

栗子1

  • 示例1:截取字符串https://help.codingce.com。命令示例如下:
# 返回 https://help.codingceselect substring_index('https://help.codingce.com', '.', 2);# 返回 codingce.comselect substring_index('https://help.codingce.com', '.', -2);
  • 示例2:任一输入参数为NULL。命令示例如下:
# 返回NULLselect substring_index('https://help.codingce.com', null, 2);

栗子2

假设有三个 IP:127.0.0.1、192.128.0.15、255.255.255.255,要分别取每一个号段的值并返回。

SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for tb_ip-- ----------------------------DROP TABLE IF EXISTS `tb_ip`;CREATE TABLE `tb_ip`  (  `pid` int(11) NOT NULL AUTO_INCREMENT,  `ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,  PRIMARY KEY (`pid`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;-- ------------------------------ Records of tb_ip-- ----------------------------INSERT INTO `tb_ip` VALUES (1, '127.0.0.1');INSERT INTO `tb_ip` VALUES (2, '192.128.0.15');INSERT INTO `tb_ip` VALUES (3, '255.255.255.255');SET FOREIGN_KEY_CHECKS = 1;
SELECTip,SUBSTRING_INDEX( tb_ip.ip, '.', 1 ) AS part1,SUBSTRING_INDEX( SUBSTRING_INDEX( tb_ip.ip, '.', 2 ), '.', -1) AS part2,SUBSTRING_INDEX( SUBSTRING_INDEX( tb_ip.ip, '.', 3 ), '.', -1) AS part3,SUBSTRING_INDEX( SUBSTRING_INDEX( tb_ip.ip, '.', 4 ), '.', -1) AS part4FROMtb_ip;

结果:

ippart1part2part3part4127.0.0.1127001192.128.0.15192128015255.255.255.255255255255255

栗子3

可以说是一个面试题,解法有多种,那么如果用 SUBSTRING_INDEX 要如何编写呢?

SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for tb_value_output-- ----------------------------DROP TABLE IF EXISTS `tb_value_output`;CREATE TABLE `tb_value_output`  (  `pid` int(11) NOT NULL AUTO_INCREMENT,  `year` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,  `month` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,  `amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,  PRIMARY KEY (`pid`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;-- ------------------------------ Records of tb_value_output-- ----------------------------INSERT INTO `tb_value_output` VALUES (1, '1991', '1', '1.1');INSERT INTO `tb_value_output` VALUES (2, '1991', '2', '1.2');INSERT INTO `tb_value_output` VALUES (3, '1991', '3', '2.2');INSERT INTO `tb_value_output` VALUES (4, '1991', '4', '2.5');INSERT INTO `tb_value_output` VALUES (5, '1992', '1', '2.1');INSERT INTO `tb_value_output` VALUES (6, '1992', '2', '2.4');INSERT INTO `tb_value_output` VALUES (7, '1992', '3', '2.1');INSERT INTO `tb_value_output` VALUES (8, '1992', '4', '2.5');SET FOREIGN_KEY_CHECKS = 1;
SELECTvo.year,SUBSTRING_INDEX( GROUP_CONCAT( vo.amount ), ",", 1 ) AS m1,SUBSTRING_INDEX( SUBSTRING_INDEX( GROUP_CONCAT( vo.amount ), ",", 2 ), ",", - 1 ) AS m2,SUBSTRING_INDEX( SUBSTRING_INDEX( GROUP_CONCAT( vo.amount ), ",", - 2 ), ",", 1 ) AS m3,SUBSTRING_INDEX( GROUP_CONCAT( vo.amount ), ",", - 1 ) AS m4 FROMtb_value_output vo GROUP BYvo.year

结果:

yearm1m2m3m419911.11.22.22.519922.12.42.12.5

其它

GROUP_CONCAT 函数:将相同的行组合起来。

来源地址:https://blog.csdn.net/weixin_43874301/article/details/129516956

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【MySQL】substring_index 函数详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL字符串函数:substring_index()的使用详解

MySQL字符串截取函数substring_index()的使用 定义SUBSTRING_INDEX - 按分隔符截取字符串语法SUBSTRING_INDEX(str, delimiter, count)返回一个 str 的子字符串,在 deli
MySQL字符串函数:substring_index()的使用详解
2014-07-04

mysql中如何截取函数substring_index

小编给大家分享一下mysql中如何截取函数substring_index,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!python的五大特点是什么python的五
2023-06-14

对MySQL函数substring_index(str,delim,count)的兼容

目录 环境 文档用途 详细信息 环境 系统平台:Microsoft Windows (64-bit) 2012 版本:5.6.5   文档用途 对MySQL函数substring_index(str,delim,count)进行兼容 详细信息 MySQL函数功
对MySQL函数substring_index(str,delim,count)的兼容
2019-07-15

详解MySQL聚合函数

目录聚合函数COUNT 函数SUM 函数AVG 函数MAX 函数 MIN 函数group by 子句简介示例:scott 数据库单列分组多列分组having 子句总结聚合函数在 mysql 中,聚合函数是用于计算多行数据的统计信息的函数,
2023-04-19

MySQL统计函数count详解

MySQL统计函数count详解 1. count()概述2. count(1)和count(*)和count(列名)的区别3. count(*)的实现方式 1. count()概述 count() 是一个聚合函数,返回指定匹配
2023-08-17

Mysql中的concat函数(拼接函数)详解

目录mysql中的concat函数(拼接函数)概述Mysql Concat函数Mysql Concat_Ws函数Mysql中的concat函数(拼接函数)概述很多时候,我们需要将不同地方获得的字符串拼接在一起,此时就需要使用CONCAT
2023-02-14

详解Mysql 函数调用优化

函数调用优化MySQL函数在内部被标记为确定性或不确定性。如果给定参数固定值的函数可以为不同的调用返回不同的结果,则它是不确定的。不确定函数的示例: RAND(), UUID()。 如果某个函数被标记为不确定的,则将WHERE针对每一行(从
2022-05-19

MySQL:聚合函数(全面详解)

聚合函数 前言一、聚合函数介绍1、AVG和SUM函数2、 MIN和MAX函数3、COUNT函数 二、GROUP BY1、基本使用2、使用多个列分组3、 GROUP BY中使用WITH ROLLUP 三、HAVING1、基本使
2023-08-16

MySQL日期加减函数详解

1. addtime()   为日期加上指定秒数select addtime(now(),1); -- 加1秒2. adddate()   有两种用法,第二个参数直接填数字的话是为日期加上指定天数,填interval的话是为日期加上指定的i
2022-05-11

Mysql空值处理函数详解

目录前言NULL Values (空值)定义测试IFNULL定义COALESCE定义对比:总结前言mysql中,空值通常用于表示缺失或未定义的值。处理空值的关键在于理解空值与其他值之间的关系,以及如何使用不同的SQL函数来处理和转换空值。
2023-08-07

编程热搜

目录