MySQL——字符串拆分(含分隔符的字符串截取)

From: https://blog.csdn.net/pjymyself/article/details/81668157

有分隔符的字符串拆分
题目要求

数据库中 num字段值为:
数据库中 num字段值

实现的效果:需要将一行数据变成多行
实现效果
实现的SQL


SELECT
    SUBSTRING_INDEX(SUBSTRING_INDEX('7654,7698,7782,7788',',',help_topic_id+1),',',-1) AS num
FROM
    mysql.help_topic
WHERE
    help_topic_id < LENGTH('7654,7698,7782,7788')-LENGTH(REPLACE('7654,7698,7782,7788',',',''))+1

    1
    2
    3
    4
    5
    6
    7
    8
    9

涉及的知识点

一、字符串拆分: SUBSTRING_INDEX(str, delim, count)

    参数解说

参数名     解释
str     需要拆分的字符串
delim     分隔符,通过某字符进行拆分
count     当 count 为正数,取第 n 个分隔符之前的所有字符; 当 count 为负数,取倒数第 n 个分隔符之后的所有字符。

2. 举例
(1)获取第2个以“,”逗号为分隔符之前的所有字符。

SUBSTRING_INDEX('7654,7698,7782,7788',',',2)

    1

获取第2个以“,”逗号为分隔符之前的所有字符

(2)获取倒数第2个以“,”逗号分隔符之后的所有字符

SUBSTRING_INDEX('7654,7698,7782,7788',',',-2)

    1

获取倒数第2个以“,”逗号分隔符之后的所有字符

二、替换函数:replace( str, from_str, to_str)

    参数解说

参数名     解释
str     需要进行替换的字符串
from_str     需要被替换的字符串
to_str     需要替换的字符串

2. 举例
(1)将分隔符“,”逗号替换为“”空。

REPLACE('7654,7698,7782,7788',',','')

    1

将分隔符“,”逗号替换为“”空

三、获取字符串长度:LENGTH( str )

    参数解说

参数名     解释
str     需要计算长度的字符串

2. 举例
(1)获取 ‘7654,7698,7782,7788’ 字符串的长度

LENGTH('7654,7698,7782,7788')

    1

获取 '7654,7698,7782,7788' 字符串的长度
实现的SQL解析


SELECT
    SUBSTRING_INDEX(SUBSTRING_INDEX('7654,7698,7782,7788',',',help_topic_id+1),',',-1) AS num
FROM
    mysql.help_topic
WHERE
    help_topic_id < LENGTH('7654,7698,7782,7788')-LENGTH(REPLACE('7654,7698,7782,7788',',',''))+1

    1
    2
    3
    4
    5
    6
    7
    8
    9

此处利用 mysql 库的 help_topic 表的 help_topic_id 来作为变量,因为 help_topic_id 是自增的,当然也可以用其他表的自增字段辅助。

help_topic 表:
help_topic 表
实现步骤:

Step1:首先获取最后需被拆分成多少个字符串,利用 help_topic_id 来模拟遍历 第n个字符串。

涉及的代码片段:

help_topic_id < LENGTH('7654,7698,7782,7788')-LENGTH(REPLACE('7654,7698,7782,7788',',',''))+1

    1
    2

实现过程

Step2:根据“,”逗号来拆分字符串,此处利用 SUBSTRING_INDEX(str, delim, count) 函数,最后把结果赋值给 num 字段。

涉及的代码片段:

SUBSTRING_INDEX(SUBSTRING_INDEX('7654,7698,7782,7788',',',help_topic_id+1),',',-1) AS num

    1

第一步:

以”,”逗号为分隔符,根据 help_topic_id 的值来截取第n+1个分隔符之前所有的字符串。 (此处 n+1 是因为help_topic_id 是从0开始算起,而此处需从第1个分隔符开始获取。)

SUBSTRING_INDEX('7654,7698,7782,7788',',',help_topic_id+1)

    1

eg:
当 help_topic_id = 0时,获取到的字符串 = 7654
当 help_topic_id = 1时,获取到的字符串 = 7654,7698
…(以此类推)
第二步:

以”,”逗号为分隔符,截取倒数第1个分隔符之后的所有字符串。

SUBSTRING_INDEX(SUBSTRING_INDEX('7654,7698,7782,7788',',',help_topic_id+1),',',-1)

    1

eg:
根据第一步,当 help_topic_id = 0时,获取到的字符串 = 7654,此时第二步截取的字符串 = 7654
根据第一步,当 help_topic_id = 1时,获取到的字符串 = 7654,7698,此时第二步截取的字符串 = 7698
…(以此类推)
最终成功实现了以下效果 ~

这里写图片描述

注:不含分隔符的字符串拆分可参考 MySQL——字符串拆分(无分隔符的字符串截取)

如果以上有错误的地方,希望大家能够指正 ~ 谢谢 ~
如果你有更好的方法,那就赶紧留言分享噢 ~ 谢谢 ~
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/402583.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python3 TypeError: 'str' does not support the buffer interface in python

http://stackoverflow.com/questions/38714936/typeerror-str-does-not-support-the-buffer-interface-in-python 下面这样会报错&#xff1a; bb{"m":1} import urllib.parse urllib.parse.unquote(b) 修正方案&#xff1a; bb.decode() urllib.parse.unquote(b) 即…

C链表反转(时间复杂度O(n))

面试的时候经常会出现的问题,现在都做一遍,回忆一下,练练手. 这个题目需要注意两点: 1.head->next 要先设置为NULL ,否则反转后,它还是指向之前的next节点 2.需要有一个tmp指针,临时保存p->next的地址,这个在改变一个节点的next地址时,经常会用到 示意图 代码实现 #inclu…

mysql中find_in_set()函数的使用及in()用法详解

From: http://www.manongjc.com/article/2710.html MySQL手册中find_in_set函数的语法解释&#xff1a; FIND_IN_SET(str,strlist) str 要查询的字符串 strlist 字段名 参数以”,”分隔 如 (1,2,6,8,10,22) 查询字段(strlist)中包含(str)的结果&#xff0c;返回结果为null…

浅谈SQLiteOpenHelper之onUpgrade例子

当你看到这个博文&#xff0c;首先你要了解onCreate这个创建方法&#xff0c;再来继续下文!&#xff08;可以参考我的上一个博文http://www.cnblogs.com/896240130Master/p/6119616.html&#xff09; 这个onUpgrade类要在onCreate类的基础上建立&#xff01;我们知道onUpgrade是…

jboss-AS目录结构了解(资料摘取)

Directory Description bin Contains startup, shutdown and other system-specific scripts. Basically all the entry point JARs and start scripts included with the JBoss distribution are located in the bin directory. 包含了服务器启动&#xff0c;关闭和系统相关…

MySQL 字符串分割 SUBSTRING_INDEX函数

From: MySQL 字符串分割 SUBSTRING_INDEX函数 Sql代码 SUBSTRING_INDEX(str,delim,count) 用delim 分割str&#xff0c;取第count个子串 url http://www.medhelp.org/forums/Acne/show/56 Java代码 substring_index(url,"/",1) 结果是http: Java代码 substri…

C++学习笔记6:多文件编程

1.添加文件到工程中&#xff1b; 2.函数调用时需要前向声明;以下为实例&#xff1a; //add.cpp int add(int x, int y) {return (x y); } //main.cpp #include "iostream" using namespace std;int add(int x, int y);int main(void) {cout << "the resu…

mysql 自定义函数function,函数和存储过程的区别

From: https://blog.csdn.net/u010365819/article/details/80470448 1.MySQL自定义函数简介 在MySQL中使用自定义函数也需要相应的要求&#xff0c;语法如下&#xff0c; 创建新函数&#xff1a; Create function function_name(参数列表) returns返回值类型 函数体内容 …

2013年28周信息安全汇总(7.7 - 7.13)

补丁本周是微软发布补丁的日子了&#xff0c;这一次一共需要打上 7 个补丁&#xff0c;其中有 6 个都是最高级别的“严重”级补丁&#xff0c;主要影响 .NET Framework、Silverlight、Windows、Office、Visual Studio 和 IE&#xff0c;可怜我的操作系统早已是补丁累补丁了。不…

Linux下创建动态库与使用

参考文章&#xff1a;dll和so文件区别与构成&#xff1a;http://www.cnblogs.com/likwo/archive/2012/05/09/2492225.html 动态库路径配置- /etc/ld.so.conf文件&#xff1a;http://blog.csdn.net/blade2001/article/details/32839937 1.如何生成一个动态库&#xff1a; 假设有…

XEN--转载自鸟哥的linux私房菜

初探 XenXen 的效能為什麼能夠這麼好&#xff1f; Xen 在使用上面有什麼樣的限制&#xff1f;我的一部主機最多可以支援幾個 Xen 的模擬環境&#xff1f; Xen 的模擬環境有幾種類型&#xff1f; 這些疑問我們都得要先知道一下才好&#xff01; 當然&#xff0c;最好能夠有個簡單…

[Mojava 10.14.4] Clover隐藏多余分区, 原来可以这么简单

好不容易把黑苹果装完了, 搞定驱动和引导, 剩下的也没啥了, 但还有一事: 隐藏clover中多余的启动项! 直接上最关键的部分: 1. 打开Clover Configurator, 挂载对应的EFI分区 2. 打开分区,加载对应的config.plist文件 3. 切换到Clover Configurator的Gui界面, 添加需要隐藏的项…

Mac下如何配置环境变量

以前都是在Windows平台上开发&#xff0c;在配置一些框架的时候&#xff0c;为了能够在命令行中调用&#xff0c;一般都会配置bin目录到环境变量中&#xff0c;这是为了让命令行在执行的时候&#xff0c;能够查找到对应的执行文件。 现在工作使用Mac&#xff0c;配置环境变量不…

C Primer+Plus(十七)高级数据表示 编程练习(二)

7、编写一个程序&#xff0c;能打开、读入一个文本文件并统计文件中每个单词出现的次数。用改进的二叉搜索树存储单词及其出现的次数。程序读入文件后&#xff0c;会提供一个有三个选项的菜单。第一个选项为列出所有单词连同其出现的次数。第二个选项为让您输入一个单词&#x…

Mybatis高级-resultMap之collection聚集

From: https://aodeng.cc/archives/mybatisgaoji 简介 聚集元素用来处理“一对多”的关系。需要指定映射的Java实体类的属性&#xff0c;属性的javaType&#xff08;一般为ArrayList&#xff09;&#xff1b;列表中对象的类型ofType&#xff08;Java实体类&#xff09;&#…

Atitit  数据存储的分组聚合 groupby的实现attilax总结

Atitit 数据存储的分组聚合 groupby的实现attilax总结 1. 聚合操作1 1.1. a、标量聚合 流聚合1 1.2. b、哈希聚合2 1.3. 所有的最优计划的选择都是基于现有统计信息来评估3 1.4. 参考资料3 1. 聚合操作 聚合也是我们在写T-SQL语句的时候经常遇到的&#xff0c;我们来分析一下一…

[java理论篇]--java的其他常用API

1、java的正则表达式&#xff1a;常用方法&#xff1a;String matches&#xff08;匹配&#xff09; &#xff1b;String split&#xff08;切割&#xff09;&#xff1b;String replaceAll(替换)&#xff1b;利用正则表达式获取字符创的核心代码&#xff1a;String str“ds…

pojo类无法注入service解决示例

From: https://blog.csdn.net/danielzhou888/article/details/83351913 本示例解决springboot中service无法注入普通jopo的问题。 不啰嗦&#xff0c;直接上代码。 如果该示例帮您解决了问题&#xff0c;请助推哦。 pojo类&#xff1a; package com.scmd.controller;import…

图测试题部分总结.ing

一个无向连通图的生成树是含有该连通图的全部顶点的&#xff08;极小连通子图&#xff09; 在有向图G的拓扑序列中&#xff0c;若顶点Vi在顶点Vj之前&#xff0c;则下列情形不可能出现的是&#xff08;D&#xff09;A&#xff0e;G中有弧<Vi&#xff0c;Vj> B&#xff0e…

mybatis动态sql中的where标签的使用

From: https://blog.csdn.net/wobuaizhi/article/details/81874664 在使用mybatis的动态sql时&#xff0c;有时候遇到根据条件判断添加where后面的筛选条件。 会出现多余的“and”或者“or”&#xff0c;如下&#xff1a; <select id"findBlog" result…