sql各种字符串分函数

--sql各种字符串分函数

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_splitSTR]') and xtype in (N'FN', N'IF', N'TF')) 

drop function [dbo].[f_splitSTR] 

GO 

--循环截取法 

CREATE FUNCTION f_splitSTR( 

	@s varchar(8000), --待分拆的字符串 

	@split varchar(10) --数据分隔符

)

RETURNS @re TABLE(col varchar(100)) 

AS 

BEGIN  

	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) 

	RETURN 

END 

GO 



/*==============================================*/ 

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_splitSTR]') and xtype in (N'FN', N'IF', N'TF')) 

drop function [dbo].[f_splitSTR] 

GO 

-- 使用临时性分拆辅助表法 

CREATE FUNCTION f_splitSTR( 

	@s varchar(8000), --待分拆的字符串 

	@split varchar(10) --数据分隔符 )

RETURNS @re TABLE(col varchar(100)) 

AS 

BEGIN  

--创建分拆处理的辅助表(用户定义函数中只能操作表变量)  

	DECLARE @t TABLE(ID int IDENTITY,b bit) 

	INSERT @t(b) 

	SELECT TOP 8000 0 FROM syscolumns a,syscolumns b 



	INSERT @re 

	SELECT SUBSTRING(@s,ID,CHARINDEX(@split,@s+@split,ID)-ID) FROM @t  WHERE ID<=LEN(@s+'a') AND CHARINDEX(@split,@split+@s,ID)=ID 

	RETURN 

END 

GO 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值