国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > SQL Server > 正文

SQL Server 自定義字符串分割函數(shù)

2024-08-31 00:54:24
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
SQL Server 自定義字符串分割函數(shù)一、按指定符號(hào)分割字符串,返回分割后的元素個(gè)數(shù),方法很簡(jiǎn)單,就是看字符串中存在多少個(gè)分隔符號(hào),然后再加一,就是要求的結(jié)果(標(biāo)量值函數(shù))
 1 create function Func_StrArrayLength   2 (   3   @str varchar(1024),  --要分割的字符串  4   @split varchar(10)  --分隔符號(hào)  5 )   6 returns int   7 as   8 begin   9   declare @location int  10   declare @start int  11   declare @length int  12   13   set @str=ltrim(rtrim(@str))  14   set @location=charindex(@split,@str)  15   set @length=1  16   while @location<>0  17   begin  18     set @start=@location+1  19     set @location=charindex(@split,@str,@start)  20     set @length=@length+1  21   end  22   return @length  23 end24 go
調(diào)用示例:selectdbo.Func_StrArrayLength('78,1,2,3',',')返回值:4二、按指定符號(hào)分割字符串,返回分割后指定索引的第幾個(gè)元素,象數(shù)組一樣方便(標(biāo)量值函數(shù))
 1 create function Func_StrArrayStrOfIndex   2 (   3   @str varchar(1024),  --要分割的字符串  4   @split varchar(10),  --分隔符號(hào)  5   @index int --取第幾個(gè)元素  6 )   7 returns varchar(1024)   8 as   9 begin  10   declare @location int  11   declare @start int  12   declare @next int  13   declare @seed int  14   15   set @str=ltrim(rtrim(@str))  16   set @start=1  17   set @next=1  18   set @seed=len(@split)  19     20   set @location=charindex(@split,@str)  21   while @location<>0 and @index>@next  22   begin  23     set @start=@location+@seed  24     set @location=charindex(@split,@str,@start)  25     set @next=@next+1  26   end  27   if @location =0 select @location =len(@str)+1  28  --這兒存在兩種情況:、字符串不存在分隔符號(hào)2、字符串中存在分隔符號(hào),跳出while循環(huán)后,@location為,那默認(rèn)為字符串后邊有一個(gè)分隔符號(hào)。 29     30   return substring(@str,@start,@location-@start)  31 end32 go
調(diào)用示例:selectdbo.Func_StrArrayStrOfIndex('8,9,4',',',2)返回值:9三、結(jié)合上邊兩個(gè)函數(shù),像數(shù)組一樣遍歷字符串中的元素(表值函數(shù))
 1 create function Func_SplitStr(@SourceSql varchar(8000), @StrSePRate varchar(100))      2   returns @temp table(F1 varchar(100))      3   as        4   begin      5   declare @ch as varchar(100)      6   set @SourceSql=@SourceSql+@StrSeprate        7   while(@SourceSql<>'')      8   begin      9     set @ch=left(@SourceSql,charindex(',',@SourceSql,1)-1)     10     insert @temp values(@ch)     11     set @SourceSql=stuff(@SourceSql,1,charindex(',',@SourceSql,1),'')     12   end     13   return     14   end15 go
----調(diào)用select * from dbo.Func_SplitStr('1,2,3,4',',')--結(jié)果:123

4


另一種方式(表值函數(shù)):
 1 create function Func_SplitStr(@str nvarchar(2000),@split nvarchar(2)) 2 returns @t table(AccountCodeID int ) 3 as  4 begin 5 declare @tmpAccountCodeID int,@getIndex int 6 set  @getIndex=charindex(',',@str) 7 while(@getIndex<>0)    8 begin 9     set @tmpAccountCodeID=convert(int,substring(@str,1,@getIndex-1))10     insert into @t(AccountCodeID) values (@tmpAccountCodeID)11     set @str=stuff(@str,1,@getIndex,'')12     set  @getIndex=charindex(',',@str)   13 end14 insert into @t(AccountCodeID) values (@str)15 return 16 end17 go
----調(diào)用select * from dbo.Func_SplitStr('1,2,3,4',',')--結(jié)果:1234
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 新干县| 青田县| 湘乡市| 离岛区| 厦门市| 忻城县| 泸西县| 太湖县| 突泉县| 长沙市| 临泽县| 莎车县| 阳曲县| 江口县| 贵港市| 襄城县| 宁化县| 昌都县| 罗平县| 灵川县| 丹东市| 应城市| 琼中| 霞浦县| 宜君县| 连南| 开封市| 垫江县| 多伦县| 西青区| 咸宁市| 白山市| 镇江市| 武川县| 丰台区| 南溪县| 海门市| 临沂市| 略阳县| 南投市| 河津市|