MySQL里实现类似SPLIT的分割字符串的函数
发布时间:2024-01-22 15:41:54
标签:SPLIT
下边的函数,实现了象数组一样去处理字符串。
一,用临时表作为数组
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


猜你喜欢
- 在学习Python3的正则表达式的时候遇到一个例子#!/usr/bin/python3import reline = "Cats
- 我们开发数据库应用时,常常需要用到模糊查询。如果同一个条件需要匹配很多字段怎么办呢?通常,程序员会每个字段都在SQL中“field like
- 我的 jupyter-bootbook 是在 ubuntu 下安装 anaconda 获得的,下面的命令在 Windows 下大部分可以运行
- 工作闲余,除抱有浓厚兴趣领域,我很不喜欢看些晦涩难懂的文字,于是想像茶余饭后的闲聊,随谈点话题。一次和一朋友吃饭聊天,随便聊到了他最近做的一
- slice:eg:>>>e=[0,1,2,3,4,5,6]>>>s=slice(2,3)>>
- 此文译自Fred Wilson 2010年2月在迈阿密举行的Web未来应用的年会上的演讲谢谢青云推荐了这篇这么好的演说谢谢卓和百忙中抽空帮我
- 完整卸载MySQL数据库的过程,具体内容如下1、关掉mysql服务右键“我的电脑”,选择“管理”,打开计算机管理,选择“服务”右键MySQL
- 1、Python 条件语句Python 条件语句是通过一条或多条语句的执行结果来决定执行的代码块。Python 编程中 if 语句用于控制程
- 排序算法是《数据结构与算法》中最基本的算法之一,也是面试必背题,为方便技术交流,文末创建技术交流群。排序算法可以分为内部排序和外部排序,内部
- 1、net/http爬虫net/http配合正则表达式爬虫。package mainimport ("fmt""
- 一、需求说明:数据库的备份,对于生产环境来说尤为重要,数据库的备份分为物理备份和逻辑备份。物理备份:使用相关的复制命令直接将数据库的数据目录
- 一、图像直方图1.1 定义图像直方图是图像的基本属性之一,也是反映图像像素数据分布的统计学特征,其横坐标代表了图像像素点在[0,255]范围
- 前言如题目所述,又是花费了两天的时间实现了该功能,本来今天下午有些心灰意冷,打算放弃嵌入到Scoll Area中的想法,但最后还是心里一紧,
- 在VirtualBox中使用Ubuntu虚拟机中,会出现虚拟硬盘不够用的情况:查了一下磁盘空间,如下所示:df -H启动CMD命令行,进入V
- 弹性管理 ECS 实例获取 RAM 子账号 AK 密钥使用API管理ECS实例,您需要能访问ECS资源的API密钥(AccessKey ID
- 现如今经常出现在网页上的基于 JavaScript 实现的弹出框有三种,分别是 alert、confirm、prompt 。该章节主要是学习
- 呵呵,先说明一下下面的程序大部分收集自网络,因为本人在asp编程中经常使用到随机函数,所以收集了一些这类的函数,并做了些注释,方便使用。首发
- 本文实例为大家分享了css+html+js实现五角星评分的具体代码,供大家参考,具体内容如下效果图:css:<style>&nb
- 今天启动SQLServer2000时报1053错误 错误如下所示: 发生错误 1053-(服务没有及时响应或控制请求。),此时正在 MSSQ
- 与其他的大型数据库例如 Oracle、DB2、SQL Server等相比,MySQL 自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。