【MySQL】substring_index 函数详解

这篇具有很好参考价值的文章主要介绍了【MySQL】substring_index 函数详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

mysql substring_index,数据库,mysql,数据库,java

【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.codingce
select substring_index('https://help.codingce.com', '.', 2);
# 返回 codingce.com
select substring_index('https://help.codingce.com', '.', -2);
  • 示例2:任一输入参数为NULL。命令示例如下:
# 返回NULL
select 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;
SELECT
	ip,
	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 part4
FROM
	tb_ip;

结果:

ip				part1	part2	part3	part4
127.0.0.1		127		0		0		1
192.128.0.15	192		128		0		15
255.255.255.255	255		255		255		255

栗子3

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

mysql substring_index,数据库,mysql,数据库,java

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;
SELECT
	vo.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 
FROM
	tb_value_output vo 
GROUP BY
	vo.year

结果:

year	m1	m2	m3	m4
1991	1.1	1.2	2.2	2.5
1992	2.1	2.4	2.1	2.5

其它

GROUP_CONCAT 函数:将相同的行组合起来。文章来源地址https://www.toymoban.com/news/detail-769969.html

到了这里,关于【MySQL】substring_index 函数详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • hive中substring_index()的使用

    substring_index(str,delim,count) str:要处理的字符串 delim:分隔符 count:计数 例子:str=www.wikibt.com substring_index(str,\\\'.\\\',1) 结果是:www substring_index(str,\\\'.\\\',2) 结果是:www.wikibt 如果count是正数,那么就是从左往右数,第N个分隔符的左边的所有内容 如果count是负数,那么就是从右往左数,第N个

    2024年02月16日
    浏览(60)
  • MySQL substr函数使用详解

    「作者主页」: 士别三日wyx 「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「专栏简介」: 此文章已录入专栏《MySQL数据库快速入门》 从一个内容中,按照指定条件, 「截取」 一个字符串。这个内容可以是数值或字符串。 参数 obj :

    2024年02月10日
    浏览(47)
  • 【MySQL】字符串截取函数 SUBSTR() 详解

    从指定位置开始的输入字符串返回一个子字符串。 SUBSTR() 函数的常用方法如下。 其中 字符串 可以是具体的字符串内容也可以是数据库的字段,或者字符串运算之后的内容。 起点和长度要求是整数,其中长度必须大于0。 1.返回起点之后的子字符串 2.返回从字符串末尾的第

    2024年02月10日
    浏览(72)
  • MySQL中的substr()函数

    截取函数substr()方法以及参数详解 1、substr(str, position)   从position截取到字符串末尾 str可以是字符串、函数、SQL查询语句 position代表起始位置,索引位置从1开始 ​ 2、substr(str from position)  从position截取到字符串末尾 和1的操作类似,和上面1的操作对比可以发现只是把括号中

    2024年04月23日
    浏览(39)
  • SQL的substring函数及其用法实例——MYSQL另一种截取目标字符的函数

    目录 1.substring()的语法和用法实例 (1)两个参数的语法和用法实例 ①语法:substring(string ,index)|substring(string from index) ②用法实例: 从指定字符串的某序数开始获取字符 (2)三个参数的语法和用法实例 ①语法:substring(string ,index,len)|substring(string from index for len) ②用法实

    2023年04月08日
    浏览(85)
  • MySQL数据库基础:JSON函数各类操作一文详解

    很多日常业务场景都会用到json文件作为数据存储起来,而mysql5.7以上就提供了存储json的支撑。往常存储json一般都保留在pg库或者是hive库里面,现在mysql有了支持的话基本业务都可以用mysql来实现。现在mysql8.x版本对json字符出处理已经做的非常完善了。现在就让我们来详细了解

    2024年02月04日
    浏览(54)
  • MySQL基础(六)-索引(index)详解

    目录 一、什么是索引? 二、索引的实现原理 三、在MySQL中,主键、unique字段上会自动添加索引。 四、索引的创建与删除 创建索引: 删除索引: 五、查看SQL语句是否使用了索引 六、索引的失效 失效的第一种情况:模糊匹配当中以“%”开头 失效的第二种情况:使用or 失效的

    2024年02月16日
    浏览(45)
  • MySQL的index merge(索引合并)导致数据库死锁分析与解决方案

    在DBS-集群列表-更多-连接查询-死锁中,看到9月22日有数据库死锁日志,后排查发现是因为mysql的优化-index merge(索引合并)导致数据库死锁。 index merge(索引合并):该数据库查询优化的一种技术,在mysql 5.1之后进行引入,它可以在多个索引上进行查询,并将结果合并返回。 在

    2024年02月08日
    浏览(82)
  • substr | mysql

    MySQL的 SUBSTR() 函数可以用于从指定字符串的指定位置开始提取指定长度的字符。 该函数的语法如下: 其中, str 为要提取的原始字符串, start_pos 为要开始提取的位置,从1开始算起, length 为所需的字符串长度。例如,以下代码可以从字符串 \\\'Hello, world!\\\' 中提取从第7个字符开

    2023年04月14日
    浏览(20)
  • 【数据库】PostgreSQL中使用`SELECT DISTINCT`和`SUBSTRING`函数实现去重查询

    在PostgreSQL中,我们可以使用 SELECT DISTINCT 和 SUBSTRING 函数来实现对某个字段进行去重查询。本文将介绍如何使用这两个函数来实现对 resource_version 字段的去重查询。 1. SELECT DISTINCT 语句 SELECT DISTINCT 语句用于从表中选择不重复的记录。如果没有指定列名,则会选择所有列。在本

    2024年02月14日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包