1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > sql根据指定符号拆分字符串表函数

sql根据指定符号拆分字符串表函数

时间:2020-09-29 00:57:16

相关推荐

sql根据指定符号拆分字符串表函数

CREATE FUNCTION [dbo].[StrSplit](@str NVARCHAR(MAX),--字符串@split VARCHAR(10),--截取符号@num INT --返回第几条数据,不填则全部返回)RETURNS @Temp TABLE (List VARCHAR(100)) ASBEGIN--用法----截取的数据全部返回--select * from StrSplit('1234/123/345','/','')----返回指定的数据----例如返回第一个/后的数据--select * from StrSplit('1234/123/345','/','2')DECLARE @t TABLE (id INT IDENTITY(1,1),List VARCHAR(100)) DECLARE @i INT=1DECLARE @j INT=1WHILE(@i>0)BEGIN SET @i=CHARINDEX(@split,@str,@j)IF(@i>0)BEGININSERT @t(List) VALUES(SUBSTRING(@str,@j,@i-@j))END ELSE BEGININSERT @t(List) VALUES(SUBSTRING(@str,@j,LEN(@str)-@j+1))ENDSET @j = @i + 1 END--是否指定第几次数据--为空则全部返回,不为空则返回指定数据IF ISNULL(@num,'')=''BEGIN --返回全部数据INSERT INTO @TempSELECT List FROM @t END ELSE BEGIN --返回指定数据INSERT INTO @TempSELECT List FROM @t WHERE id=@num END RETURNEND

例:根据'/'拆分'111/222/4333/122' 我要取出'222',或得到拆分后全部数据

DECLARE @Test NVARCHAR(1000)='111/222/4333/122'SELECT * FROM StrSplit(@Test,'/','2')--返回结果即为:222--@Test 为要拆分的变量--'/' 根据符号'/'进行拆分--'2' 为要去的第几位数据,如果不写为空的时候,则返回所有参数--例如SELECT * FROM StrSplit(@Test,'/','')--则返回数据为:--111--222--4333--122

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。