1 /****************************************************************************** 2 ** Name: ufn_Split 3 ** Desc: 拆分字符串 4 ** 5 ** 6 ** Return Values: 7 ** 8 ** Parameters: 9 ** Auth: 10 ** Date: 11 *******************************************************************************/ 12 ALTER function [dbo].[ufn_Split] 13 ( 14 @String varchar(max), -- 要拆分的字符串 15 @Key varchar(50) -- 关键字 16 ) 17 returns @sValues table(sIndex int identity(1,1), sValue varchar(max) ) 18 as 19 begin 20 -- 索引及当前值 21 declare @KeyIndex int 22 declare @CurrentValue varchar(500) 23 24 set @string = RTrim(LTrim(@String)) 25 26 -- 拆分 27 set @KeyIndex = charindex(@Key,@string) 28 29 while @KeyIndex <> 0 30 begin 31 set @CurrentValue = substring(@String,1,@KeyIndex-1) 32 33 insert into @sValues(sValue) values (@CurrentValue) 34 35 set @String = substring(@String, @KeyIndex+1, len(@String)- @KeyIndex) 36 37 set @KeyIndex = charindex(@Key, @String) 38 end 39 40 insert into @sValues(sValue) values (@String) 41 42 -- 返回拆份结果 43 return 44 end
测试:
1 /****************************************************************************** 2 ** Name: ufn_IsNullOrEmpty 3 ** Desc: 同时判断null和空字符 4 ** 5 ** 6 ** Return Values:null或空时,返回指定字符串,否则,返回自己 7 ** 8 ** Parameters: 9 ** Auth: 曾荣彬 10 ** Date: 2006-11-3 11 *******************************************************************************/ 12 ALTER function ufn_IsNullOrEmpty(@expression sql_variant, @Replace sql_variant) 13 returns sql_variant 14 as 15 begin 16 if( @expression = '' or @expression is null) 17 return @Replace 18 return @expression 19 end
测试: