SQL Server 截取字符串数组,获取字符串指定值

来源:互联网 发布:三星usb网络共享怎么用 编辑:程序博客网 时间:2024/05/16 02:44

截取字符串:例如 qweqe,1231423,werwer;qweqe,1231423,werwer

返回一个表
这里写图片描述

    --split:循环截取法CREATE FUNCTION f_splitSTR(@s   varchar(8000),   --待分拆的字符串@split varchar(10)     --数据分隔符)RETURNS @re TABLE(col varchar(100))ASBEGIN DECLARE @splitlen int SET @splitlen=LEN(@split+'a')-2--多位分隔字符串比如 ';;',';,'等 WHILE CHARINDEX(@split,@s)>0 BEGIN  INSERT @re VALUES(LEFT(@s,CHARINDEX(@split,@s)-1))  SET @s=STUFF(@s,1,CHARINDEX(@split,@s)+@splitlen,'') END INSERT @re VALUES(@s) RETURNENDGO

选取指定字符串值
例如: 123,456,789,012
我要获取456这个值
select dbo.f_split_l(‘123,456,789,012’,’,’,’2’)
就能得到 456这个值
这里写图片描述

CREATE FUNCTION dbo.f_split_l(--方法:循环截取法,选取指定位置的字符串@s   varchar(8000),   --待分拆的字符串@split varchar(10),     --数据分隔符@in int     --取的第几条数据)RETURNS VARCHAR(100)ASBEGIN DECLARE @splitlen int,@cou int,@re varchar(100) SET @s=@s+@split  --在字符串最后添加一个数据分隔符 SET @splitlen=LEN(@split+'a')-2 SET @cou=0 WHILE CHARINDEX(@split,@s)>0 AND @in>@cou BEGIN  SET @re=(LEFT(@s,CHARINDEX(@split,@s)-1))  SET @s=STUFF(@s,1,CHARINDEX(@split,@s)+@splitlen,'')  SET @cou=@cou+1 END IF(CHARINDEX(@split,@s)<=0) AND @in>@cou    SET @re=null RETURN @reEND
0 0
原创粉丝点击