问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求sql split函数的用法?

发布网友 发布时间:2022-04-25 20:35

我来回答

2个回答

懂视网 时间:2022-04-29 23:29

Create FUNCTION [dbo].[F_Split]
 (
 @SplitString nvarchar(max), --源字符串
 @Separator nvarchar(10)=‘ ‘ --分隔符号,默认为空格
 )
 RETURNS @SplitStringsTable TABLE --输出的数据表
( [id] int identity(1,1), [value] nvarchar(max) ) AS BEGIN DECLARE @CurrentIndex int; DECLARE @NextIndex int; DECLARE @ReturnText nvarchar(max); SELECT @CurrentIndex=1; WHILE(@CurrentIndex<=len(@SplitString)) BEGIN SELECT @NextIndex=charindex(@Separator,@SplitString,@CurrentIndex); IF(@NextIndex=0 OR @NextIndex IS NULL) SELECT @NextIndex=len(@SplitString)+1; SELECT @ReturnText=substring(@SplitString,@CurrentIndex,@NextIndex-@CurrentIndex); INSERT INTO @SplitStringsTable([value]) VALUES(@ReturnText); SELECT @CurrentIndex=@NextIndex+1; END RETURN; END --使用示例 select * FROm dbo.F_Split(‘111,b2222,323232,32d,e,323232f,g3222‘, ‘,‘)
技术分享

结果为

id          value

-------- ---------------------------------------

1           111

2           b2222

3           323232

4           32d

5           e

6           323232f

7           g3222


=========================================================================

二、F_SplitLength:获取分割后的字符数组的长度

技术分享
Create function [dbo].[F_SplitLength]
 (
 @String nvarchar(max), --要分割的字符串
 @Split nvarchar(10) --分隔符号
 )
 returns int
 as
 begin
 declare @location int
 declare @start int
 declare @length int
 
 set @String=ltrim(rtrim(@String))
 set @location=charindex(@split,@String)
 set @length=1
 while @location<>0
 begin
 set @start=@location+1
 set @location=charindex(@split,@String,@start)
 set @length=@length+1
 end
 return @length
 end

--调用示例
select dbo.F_SplitLength(‘111,b2222,323232,32d,e,323232f,g3222‘,‘,‘)
技术分享

结果为7。

 

=========================================================================

三、F_SplitOfIndex:获取分割后特定索引的字符串

技术分享
Create function [dbo].[F_SplitOfIndex]
 (
 @String nvarchar(max), --要分割的字符串
 @split nvarchar(10), --分隔符号
 @index int --取第几个元素
 )
 returns nvarchar(1024)
 as
 begin
 declare @location int
 declare @start int
 declare @next int
 declare @seed int
 
 set @String=ltrim(rtrim(@String))
 set @start=1
 set @next=1
 set @seed=len(@split) 
 set @location=charindex(@split,@String)
 
 while @location<>0 and @index>@next
 begin
 set @start=@location+@seed
 set @location=charindex(@split,@String,@start)
 set @next=@next+1
 end
 if @location =0 select @location =len(@String)+1 
 return substring(@String,@start,@location-@start)
 end

--使用示例
select dbo.F_SplitOfIndex(‘111,b2222,323232,32d,e,323232f,g3222‘,‘,‘, 3)
技术分享

SQL自定义函数split分隔字符串

标签:

热心网友 时间:2022-04-29 20:37

目前的sql没有自带split的函数,所以如果想用的话,需要自己先自建一个split的内嵌函数后,再使用;

这个函数最简单的用法,就是通过某个特定的分隔符,将一串字符串分割开来;

例如:split('a/b/c/d/e','/'),就会变成:

a

b

c

d

e

这个意思就是说,用'\'作为分隔符,分割'a/b/c/d/e'这个字符串;

具体如何构建split函数,可以参考一下这个:网页链接

当然还可以根据自己的需要,构建更复杂的函数,方便自己的使用;

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
蛋上有疙瘩怎么回事 姻缘测试:属虎和属兔的合不合 婚姻怎么样 电脑能上网手机连上wifi不能上网? 为什么手机连上电脑WIFI却上不了网呢 win7开机黑屏安全模式正常是怎么回事 win7开机黑屏安全模式正常问题解 ... 电脑开机安全模式能进电脑可以进安全模式但正常系统为什么进不去 ...进笔记本电脑安全模式能开机但是正常模式开机黑屏 电脑开机黑屏但安全模式能进去电脑开机一启动系统就黑屏进安全系统正常... 12月份女生面试应该穿什么? 我想去哈尔滨玩几天,大概在十二月中旬,穿什么才不会被冻着?大概需要多... 请问split函数如何使用? 面部补水用什么方式比较好? Split函数怎么用? 什么面膜最补水 什么面 膜补水啊,最近皮肤太干燥了? 2340*1080是多少寸? 什么面膜补水效果好 什么补水面膜比较好用 问一下,什么面 膜补水啊,敏感肌可以用的那种? 想给皮肤补水用什么面膜合适呀? 皮肤干燥用什么面膜补水效果好 脸上特别干,用干什么面膜补水呢? 什么面膜补水效果最好? 什么面补水效果好 移动银卡客户什么意思 在支付宝里领到的花呗红包要怎么用啊? 2340x1080是2k屏吗? 华为手机的相机里面人像模式是什么? 对一个人彻底的完了死心,适合用什么微信名 菠萝蜜肉是直接吃吗?怎么感觉很难吃。 split函数的使用 split函数在vb中的用法 split函数怎么用啊,下面那句话什么意思? split函数详细用法 java中split怎么用? python中的split函数的用法是什么? python中split的用法. VB中split 函数的用法 求split函数讲解(附带有代码请详解解释一下Split用法和代码含义)_百度... unity3d中如何使用split函数? 请教VB中Split函数的作用和用法 python中split的具体用法 ASP中Split函数的用法 Java中split函数,如何通过String[]截取? VB中split函数的用法 苹果手机的屏幕如何保护 不被摔? 手机屏幕该如何保护? 佳能700d新手使用教程 要有效防止驼背的发生,平时可以多做哪些动作? 什么运动可以预防驼背?