广告
返回顶部
首页 > 资讯 > 数据库 >mysql 字符串拆分并分组
  • 947
分享到

mysql 字符串拆分并分组

2023-06-06 11:06:44 947人浏览 薄情痞子
摘要

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

这篇文章主要为大家详细介绍了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

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

您可能感兴趣的文档:

--结束END--

本文标题: mysql 字符串拆分并分组

本文链接: https://www.lsjlt.com/news/246758.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • mysql 字符串拆分并分组
    这篇文章主要为大家详细介绍了mysql 字符串拆分并分组,文中示例代码介绍的非常详细,具有一定的参考价值,发现的小伙伴们可以参考一下:无分隔符的字符串截取题目要求数据库中字段值:实现效果:需要将一行数据变成多行实现的sqlSELECT...
    99+
    2023-06-06
  • mysql怎么拆分字符串
    mysql中拆分字符串的方法字符串拆分函数:SUBSTRING_INDEX(str, delim, count)注解:str :需要拆分的字符串delim :分隔符,通过某字符进行拆分count :当 count 为正数,取第 n 个分隔符...
    99+
    2022-10-21
  • Mysql - 字符串截取、拆分
    前言 在开发过程中,字符串的截取虽然可以在程序代码中来做,但是如果可以在 SQL 语句中处理,又不会造成 SQL 语句变的很复杂,那自然就可以在 SQL 语句中处理,速度还会更快一点。这个就需要根据具体的业务进行衡量了 概述 一、截取字符串...
    99+
    2023-08-19
    mysql 字符串截取 字符串拆分
  • MySQL 字符串拆分实例(无分隔符的字符串截取)
    无分隔符的字符串截取 题目要求 数据库中字段值: 实现效果:需要将一行数据变成多行 实现的sql SELECT LEFT(SUBSTRING('P1111',help_topic_id...
    99+
    2022-05-30
    MySQL 字符串拆分 无分隔符 字符串截取
  • MySQL 字符串拆分操作(含分隔符的字符串截取)
    无分隔符的字符串截取 题目要求 数据库中字段值: 实现效果:需要将一行数据变成多行 实现的sql SELECT LEFT(SUBSTRING('P1111',help_topic_id...
    99+
    2022-05-22
    MySQL 字符串拆分
  • mysql如何将字符串按分隔符拆分
    mysql将字符串按分隔符拆分的示例:字符串拆分: SUBSTRING_INDEX(str, delim, count),例如:SUBSTRING_INDEX('a,b,c',',',1) &nbs...
    99+
    2022-10-13
  • JavaScript如何将字符串拆分为字符数组
    这篇文章主要介绍了JavaScript如何将字符串拆分为字符数组,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。如何将字符串拆分为字符数组有多种方法可以将字符串分割成字符数组,...
    99+
    2023-06-27
  • 怎么在python拆分与合并字符串
    这篇文章将为大家详细讲解有关怎么在python拆分与合并字符串,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python有哪些常用库python常用的库:1.requesuts;2.scra...
    99+
    2023-06-14
  • MySQL按指定字符合并及拆分
    按照指定字符进行合并或拆分是经常碰到的场景,MySQL在合并的写法上比较简单,但是按指定字符拆分相对比较麻烦一点(也就是要多写一些字符)。本文将举例演示如何进行按照指定字符合并及拆分。 1、 合并 MySQL数据库中按照指定字符合...
    99+
    2020-01-07
    MySQL按指定字符合并及拆分
  • mysql中字符串拆分函数是什么
    这篇文章主要介绍了mysql中字符串拆分函数是什么,此处通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下:无分隔符的字符串截取题目要求数据库中字段值:实现效果:需要将一行数据变成多行实现的sqlS...
    99+
    2023-06-06
  • SQL字符串的合并与拆分实例代码分析
    本篇内容主要讲解“SQL字符串的合并与拆分实例代码分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL字符串的合并与拆分实例代码分析”吧!字符串的合并在Or...
    99+
    2022-10-19
  • jquery中如何拆分字符串
    使用jquery将字符串拆分为数组的方法:split()函数,将字符串分割为子字符串,并将结果作为数组返回,语法:string.split([separator[, limit]])。具体方法如下:jquery中可以使用split()函数将...
    99+
    2022-10-24
  • MySql字符串拆分实现split功能(字段分割转列)
    目录需求描述实现的sql案例演示字符串拆分: SUBSTRING_INDEX(str, delim, count)替换函数:replace( str, from_str, ...
    99+
    2022-11-13
  • MySql字符串拆分如何实现split功能
    这篇文章主要讲解了“MySql字符串拆分如何实现split功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySql字符串拆分如何实现split功能”吧!需求描述数据库中 num字段值为:...
    99+
    2023-06-30
  • Mysql(函数) 字符串截取、拆分, 逗号分割字符串当做 in 的条件
    目录  引言:  数据库函数的总结(一) 1. mysql截取拆分 2. 逗号分割的字符串 作为in条件 -> 2.1 正常的效果应该是  ---> 2.1.1 错误:  3. 字符串合并(多条数据合并 用'、'分割)  引言:  数据库...
    99+
    2023-09-11
    mysql sql 数据库 spring boot mybatis
  • Oracle字符串拆分实例详解
    目录oracle字符串拆分1. 使用regexp_substr()函数1.1 拆分aaa,bbb,ccc1.2 拆分aaa;bbb;ccc1.3 level作用2. 在oracle中实现mysql的find_i...
    99+
    2023-04-03
    oracle 字符串切割 oracle字符串拆分 oracle拆分函数
  • MySql字符串拆分实现split功能(字段分割转列、转行)
    字符串转多行 需求描述    实现的sql     案例演示 字符串拆分: SUBSTRING_INDEX(str, delim, count) 替换函数:replace( str, from_s...
    99+
    2023-09-05
    mysql
  • oracle拆分逗号分隔字符串 实现split
    最近老有人问题同样的sql 实现方法,itpub 上发一下,照顾百度用户。 如果一个字符串中有像逗号或其它符号分隔,你想把它折分成列,如’first field, second field , thir...
    99+
    2022-10-18
  • Python字符串的字符转换、字符串劈分、字符串合并问题分析
    目录1.字符串的字符转换1.1.字符转换的概念1.2.字符转换的应用案例2.字符串的劈分2.1.字符串劈分的概念2.2.调用方法split或者rsplit劈分字符串2.3.调用方法p...
    99+
    2023-03-20
    Python字符串合并 字符串劈分 Python字符串的字符转换
  • python如何拆分字符串为列表
    这篇文章主要介绍了python如何拆分字符串为列表,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。拆分字符串为列表str1 = 'hello&nbs...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作