日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2025/6/15 数据库 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL自定义函数split分隔字符串 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、F_Split:分割字符串拆分為數據表

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)

結果為323232。

?

轉自:http://www.cnblogs.com/xiaofengfeng/archive/2012/06/01/2530930.html

總結

以上是生活随笔為你收集整理的SQL自定义函数split分隔字符串的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。