MySQL里实现类似SPLIT的分割字符串的函数

MySQL实现split函数相同的功能 需求 使用MySQL实现类似于String的split函数的功能。 一、场景描述 一个仓库中存储很多以逗号分隔的商品,以SQL对商品进行拆分。 二、实现逻辑 2.1创建仓库 # 创建一个用于存储商品的仓库 create table store ( id int auto_increment primary key comment '主键id', title varchar(255) comment '仓库名称', sku_id varchar(255) c 阅读详情


SQL对字符串的处理能力比较弱,比如我要循环遍历象1,2,3,4,5这样的字符串,如果用数组的话,遍历很简单,但是T-SQL不支持数组,所以处理下来比较麻烦
下边的函数,实现了象数组一样去处理字符串。 

一,用临时表作为数组 

复制代码代码如下:

create function f_split(@c varchar(2000),@split varchar(2)) 
returns @t table(col varchar(20)) 
as 
begin 
while(charindex(@split,@c)<>0) 
begin 
insert @t(col) values (substring(@c,1,charindex(@split,@c)-1)) 
set @c = stuff(@c,1,charindex(@split,@c),'') 
end 
insert @t(col) values (@c) 
return 
end 
go 
select * from dbo.f_split('dfkd,dfdkdf,dfdkf,dffjk',',') 
drop function f_split 
col 
-------------------- 
dfkd 
dfdkdf 
dfdkf 
dffjk 
(所影响的行数为 4 行) 


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

复制代码代码如下:

CREATE function Get_StrArrayLength 
( 
@str varchar(1024), --要分割的字符串 
@split varchar(10) --分隔符号 
) 
returns int 
as 
begin 
declare @location int 
declare @start int 
declare @length int 
set @str=ltrim(rtrim(@str)) 
set @location=charindex(@split,@str) 
set @length=1 
while @location<>0 
begin 
set @start=@location+1 
set @location=charindex(@split,@str,@start) 
set @length=@length+1 
end 
return @length 
end 

调用示例:select dbo.Get_StrArrayLength('78,1,2,3',',') 
返回值:4 

三、按指定符号分割字符串,返回分割后指定索引的第几个元素,象数组一样方便 

复制代码代码如下:

CREATE function Get_StrArrayStrOfIndex 
( 
@str varchar(1024), --要分割的字符串 
@split varchar(10), --分隔符号 
@index int --取第几个元素 
) 
returns varchar(1024) 
as 
begin 
declare @location int 
declare @start int 
declare @next int 
declare @seed int 
set @str=ltrim(rtrim(@str)) 
set @start=1 
set @next=1 
set @seed=len(@split) 
set @location=charindex(@split,@str) 
while @location<>0 and @index>@next 
begin 
set @start=@location+@seed 
set @location=charindex(@split,@str,@start) 
set @next=@next+1 
end 
if @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,2,3,4,5' 
declare @next int 
set @next=1 
while @next<=dbo.Get_StrArrayLength(@str,',') 
begin 
print dbo.Get_StrArrayStrOfIndex(@str,',',@next) 
set @next=@next+1 
end 

调用结果: 
1 
2 
3 
4 
5
【MySQL用法】mysql如何进行以,分割的字符串的拆分 目录 1、需求 2、实现(sql语句) 3、原理分析 3.1、SUBSTRING_INDEX(str,delim,count)函数 3.2、LENGTH(str)函数 3.3、REPLACE(str,from_str,to_str)函数 1、需求 现有如下需求:需要将字符串(电脑IP) 192.168.211.35 拆分成 192 168 211 35 2、实现(sq... 阅读详情

相关推荐

mysql将字符串分割成多列值

利用mysql中提供的所有函数,组成的一个存储过程。此存储过程主要是将传入的字符串分割为多个值,单个列。

mysql如何实现split操作?

在 MySQL 中并没有内置的 split() 函数,但可以通过自定义函数或存储过程来实现字符串分割。以下是几种实现方法: 自定义函数 fn_split(): DROP FUNCTION IF EXISTS fn_split;DELIMITER $$CREATE FUNCTION fn_split(s TEXT, del CHAR(1), i INT)RETURNS VARCH

gzjgzj12345的博客 4925

第四节、C# 上位机面向对象编程详解(工控硬件继承实战版)

继承核心价值:在 C# 上位机工控开发中,继承的核心是通用逻辑复用与接口统一,将所有硬件的通用属性 / 方法封装到抽象基类,子类只需实现独有逻辑,大幅减少冗余代码。基类设计要点:优先使用抽象基类,合理分配访问修饰符(privateprotectedpublic),定义通用事件与虚方法,提供资源释放机制,兼顾复用性与扩展性。子类设计要点:通过: base()调用基类构造函数,强制实现抽象方法(保证接口统一),选择性重写虚方法(实现独有逻辑),复用基类的protected成员。多设备管理。

kylezhao2019的博客 787

Mysql类似split函数方法SUBSTRING_INDEX

我们可以在mysql中实现类似于split函数的方法,例如: select substring_index('TEST_1,TEST_2,TEST_3,TEST_4',',',1) from dual;

优快云_Ty的博客 2327

Python数据爬取超详细讲解(零基础入门,老年人都看的懂)

Python数据爬取超详细讲解(零基础入门,老年人都看的懂)

python03011的博客 3753

工作笔记05:imu、底盘车轮、单激光雷达外参校准(基于hdl_graph_slam建图和定位)

目录1. imu 校准1.1 IMU型号1.2 坐标定义1.2.1 大地坐标系(WGS84)1.2.2 当地地理坐标系(ENU)1.2.3 传感器坐标轴定义1.3 传感器校准2. 底盘车辆参数配置3. 单激光雷达校准参考文献 1. imu 校准 1.1 IMU型号 阅读IMU产品说明书,获得如下信息: Yesense YIS300 系列惯性传感系统 YIS300 系列包含: YIS300-U 惯性测量单元(IMU):输出经过校准的加速度和角速度值,同时也能够输出磁场强度信息。 YIS300-V 垂直参考系

穿林需独行的博客 4203

MySQL中实现分割字符串的方法

比如现在有一字符串:1,2,44,5,666,29232要把它按照逗号分割成:1244566629232而且还要求它的总数。这个我以前写过。不过今天规范一下。1、具体函数 SQL codeDELIMITER $$CREATE DEFINER=`root`@`%` FUNCTION `func_get_split_string_total`(f_string varchar(1000),f_deli...

weixin_33724059的博客 482

Ansys Zemax实战:5步搞定多模光纤耦合效率优化(附IMAE操作数详解)

本文详细介绍了使用Ansys Zemax优化多模光纤耦合效率的5个关键步骤,包括几何图像分析设置、IMAE操作数应用及偏振效应处理。通过实战案例解析,帮助工程师快速掌握光纤耦合效率提升技巧,特别针对IMAE操作数的配置保存机制和菲涅尔损耗控制进行深度讲解。

potato的博客 690

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) valu...

weixin_35710158的博客 905

YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块

本文记录的是基于StarNet的YOLOv11轻量化改进方法研究。StarNet设计简洁,没有复杂的设计和精细调整的超参数,仅是一个 4 阶段的分层架构。并且其中能够在低维空间计算的同时考虑极高维的特征这一特性,进而提高模型精度。本文在替换骨干网络中配置了原论文中的starnet_s1starnet_s2starnet_s3和starnet_s4七种模型,以满足不同的需求。

Limiiiing的博客 5987

AutoSAR系列讲解(入门篇)2.2-SWC的类型

该章讲解了两种SWC的分类,并且映射到实际的工程中应该是具体的什么文件类型

雪云飞星的博客 4万+

mysql类似split的函数_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 (substr...

weixin_35792040的博客 827

R语言使用party包中的ctree函数构建条件推理决策树(Conditional inference trees)、使用plot函数可视化训练好的条件推理决策树、条件推理决策树的叶子节点的阴影区域表

R语言使用party包中的ctree函数构建条件推理决策树(Conditional inference trees)、使用plot函数可视化训练好的条件推理决策树、条件推理决策树的叶子节点的阴影区域表示的是阳性样本的比例

data+scenario+science+insight 1225

mysql里实现类似split的分割字符串的函数_mysql函数split功能实现,mysql分割字符串split...

网上的样品,使用会报错,我这里知错并且改正为可用。其实也只是,名字错了而已。先设置:SET GLOBAL log_bin_trust_function_creators = 1;1. 函数func_splitStringTotal:将字符串按指定方式分割,并计算单元总数DELIMITER $$DROP function IF EXISTS `func_splitString` $$CREATE F...

weixin_39647186的博客 331

【TC3xx芯片】TC3xx DMA模块详解

TC3xx DMA模块详解

qq_36056498的博客 5917

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

mysql里实现类似split的分割字符串的函数_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(@s...

weixin_42463997的博客 494

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

mysql里实现类似split的分割字符串的函数_SQL里有没有类似SPLIT的分割字符串函数...

展开全部createfunctionf_split(@32313133353236313431303231363533e59b9ee7ad9431333431373839cvarchar(2000),@splitvarchar(2))returns@ttable(colvarchar(20))asbeginwhile(charindex(@split,@c)<>0)begininser...

weixin_42356315的博客 360

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

上一篇: MySQL 存储过程 创建 查看 调用 删除
下一篇: CentOS上如何把Web服务器从Apache换到Nginx
KerNEL.AC.CN
博客等级 码龄15年 100粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值