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

mysql 字符串拆分并分组

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

北京

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

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

看不清楚,换张图片

免费获取短信验证码

mysql 字符串拆分并分组

这篇文章主要为大家详细介绍了mysql 字符串拆分并分组,文中示例代码介绍的非常详细,具有一定的参考价值,发现的小伙伴们可以参考一下:

无分隔符的字符串截取

题目要求

数据库中字段值:

mysql 字符串拆分并分组

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

mysql 字符串拆分并分组

实现的sql

SELECT LEFT(SUBSTRING('P1111',help_topic_id+1),1) AS num FROM mysql.help_topic WHERE help_topic_id < LENGTH('P1111');

涉及的知识点

一、字符串截取:SUBSTRING(str,pos)

1、参数说明

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

2、 举例

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

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

mysql 字符串拆分并分组

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

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

mysql 字符串拆分并分组

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

1、参数解说

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

2、 举例

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

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

mysql 字符串拆分并分组

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

1、参数解说

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

2、举例

(1)获取 ‘7654,7698,7782,7788' 字符串的长度

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

mysql 字符串拆分并分组

实现的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

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

help_topic 表:

mysql 字符串拆分并分组

实现步骤:

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

涉及的代码片段:

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

mysql 字符串拆分并分组

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

涉及的代码片段:

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

第一步:

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

SUBSTRING_INDEX('7654,7698,7782,7788',',',help_topic_id+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)

eg:

根据第一步,当 help_topic_id = 0时,获取到的字符串 = 7654,此时第二步截取的字符串 = 7654

根据第一步,当 help_topic_id = 1时,获取到的字符串 = 7654,7698,此时第二步截取的字符串 = 7698

…(以此类推)

最终成功实现了以下效果 ~

mysql 字符串拆分并分组

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

补充:mysql字段分隔符拆分_MySQL里实现类似SPLIT的分割字符串的函数

下边的函数,实现了象数组一样去处理字符串。

一、用临时表作为数组

create function f_split(@c varchar(2000),@split varchar(2))returns @t table(col varchar(20))asbeginwhile(charindex(@split,@c)<>0)begininsert @t(col) values (substring(@c,1,charindex(@split,@c)-1))set @c = stuff(@c,@c),'')endinsert @t(col) values (@c)returnendgoselect * from dbo.f_split('dfkd,dfdkdf,dfdkf,dffjk',',')drop function f_splitcol--------------------dfkddfdkdfdfdkfdffjk

(所影响的行数为 4 行)

二、按指定符号分割字符串

返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。

CREATE function Get_StrArrayLength(@str varchar(1024),--要分割的字符串@split varchar(10) --分隔符号)returns intasbegindeclare @location intdeclare @start intdeclare @length intset @str=ltrim(rtrim(@str))set @location=charindex(@split,@str)set @length=1while @location<>0beginset @start=@location+1set @location=charindex(@split,@str,@start)set @length=@length+1endreturn @lengthend

调用示例:

select dbo.Get_StrArrayLength('78,2,3',')

返回值:4

三、按指定符号分割字符串

返回分割后指定索引的第几个元素,象数组一样方便

CREATE function Get_StrArrayStrOfIndex(@str varchar(1024),--要分割的字符串@split varchar(10),--分隔符号@index int --取第几个元素)returns varchar(1024)asbegindeclare @location intdeclare @start intdeclare @next intdeclare @seed intset @str=ltrim(rtrim(@str))set @start=1set @next=1set @seed=len(@split)set @location=charindex(@split,@str)while @location<>0 and @index>@nextbeginset @start=@location+@seedset @location=charindex(@split,@start)set @next=@next+1endif @location =0 select @location =len(@str)+1--这儿存在两种情况:1、字符串不存在分隔符号 2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。return substring(@str,@start,@location-@start)end

调用示例:

select dbo.Get_StrArrayStrOfIndex('8,9,4',2)

返回值:9

四、结合上边两个函数,象数组一样遍历字符串中的元素

declare @str varchar(50)set @str='1,3,4,5'declare @next intset @next=1while @next<=dbo.Get_StrArrayLength(@str,')beginprint dbo.Get_StrArrayStrOfIndex(@str,@next)set @next=@next+1end

调用结果:

1

2

3

4

5

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

免责声明:

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

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

mysql 字符串拆分并分组

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

下载Word文档

猜你喜欢

mysql 字符串拆分并分组

这篇文章主要为大家详细介绍了mysql 字符串拆分并分组,文中示例代码介绍的非常详细,具有一定的参考价值,发现的小伙伴们可以参考一下:无分隔符的字符串截取题目要求数据库中字段值:实现效果:需要将一行数据变成多行实现的sqlSELECT LE
2023-06-06

Mysql - 字符串截取、拆分

前言 在开发过程中,字符串的截取虽然可以在程序代码中来做,但是如果可以在 SQL 语句中处理,又不会造成 SQL 语句变的很复杂,那自然就可以在 SQL 语句中处理,速度还会更快一点。这个就需要根据具体的业务进行衡量了 概述 一、截取字符串
2023-08-19

MySQL 字符串拆分实例(无分隔符的字符串截取)

无分隔符的字符串截取 题目要求 数据库中字段值:实现效果:需要将一行数据变成多行实现的sqlSELECT LEFT(SUBSTRING('P1111',help_topic_id+1),1) AS num FROM mysql.help_t
2022-05-30

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

无分隔符的字符串截取 题目要求 数据库中字段值:实现效果:需要将一行数据变成多行实现的sqlSELECT LEFT(SUBSTRING('P1111',help_topic_id+1),1) AS num FROM mysql.help_t
2022-05-22

JavaScript如何将字符串拆分为字符数组

这篇文章主要介绍了JavaScript如何将字符串拆分为字符数组,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。如何将字符串拆分为字符数组有多种方法可以将字符串分割成字符数组,
2023-06-27

怎么在python拆分与合并字符串

这篇文章将为大家详细讲解有关怎么在python拆分与合并字符串,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python有哪些常用库python常用的库:1.requesuts;2.scra
2023-06-14

sql怎么拆分字符串

sql 中拆分字符串有几种方法:split_string() 函数:按指定分隔符拆分;substr() 和 instr() 函数:按特定长度拆分;正则表达式:使用模式匹配拆分;xml:将字符串转换为 xml 文档并提取子字符串。最佳方法取决
sql怎么拆分字符串
2024-05-30

MySQL按指定字符合并及拆分

按照指定字符进行合并或拆分是经常碰到的场景,MySQL在合并的写法上比较简单,但是按指定字符拆分相对比较麻烦一点(也就是要多写一些字符)。本文将举例演示如何进行按照指定字符合并及拆分。1、 合并MySQL数据库中按照指定字符合并可以直接用group_conca
MySQL按指定字符合并及拆分
2020-01-07

mysql拆分字符串的方法有哪些

MySQL拆分字符串的方法有以下几种:使用SUBSTRING_INDEX函数:这个函数可以按照指定的分隔符来拆分字符串,返回指定位置之前或之后的子字符串。例如,可以使用SUBSTRING_INDEX函数来获取字符串中的第一个、最后一个或特定
mysql拆分字符串的方法有哪些
2024-04-09

mysql中字符串拆分函数是什么

这篇文章主要介绍了mysql中字符串拆分函数是什么,此处通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下:无分隔符的字符串截取题目要求数据库中字段值:实现效果:需要将一行数据变成多行实现的sqlS
2023-06-06

mysql拆分字符串要注意哪些事项

在 MySQL 中拆分字符串时,需要注意以下事项:使用内置函数:MySQL 提供了一些内置函数来处理字符串,如 SUBSTRING、LEFT、RIGHT、CONCAT、REPLACE 等,可以使用这些函数来实现字符串拆分操作。使用正则表达式
mysql拆分字符串要注意哪些事项
2024-04-09

MySql字符串拆分如何实现split功能

这篇文章主要讲解了“MySql字符串拆分如何实现split功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySql字符串拆分如何实现split功能”吧!需求描述数据库中 num字段值为:
2023-06-30

Oracle字符串拆分实例详解

目录oracle字符串拆分1. 使用regexp_substr()函数1.1 拆分aaa,bbb,ccc1.2 拆分aaa;bbb;ccc1.3 level作用2. 在oracle中实现mysql的find_in_set()函数2.1 使用
2023-04-03

编程热搜

目录