'A,B,C'字符串转换为列形式

/*

'A,B,C'

字符串转换为:

A
B
C

*/
--【方法一】

CREATE FUNCTION dbo.sf_DS_SplitNVarchar  
(  
 @strValues nvarchar(4000)  
)  
RETURNS  @tblStrList TABLE (id int identity(1,1),value nvarchar(4000))  
AS  
BEGIN  
 declare @strTmp nvarchar(4000)  
 declare @intPos int  
 select @strValues=ltrim(rtrim(@strValues))  
   
 while @strValues<>''  
 begin  
  select @intPos=case when charindex(',',@strValues)=0 then len(@strValues) else charindex(',',@strValues)-1 end  
  select @strTmp=ltrim(rtrim(substring(@strValues,1,@intPos)))  
  select @strValues=ltrim(rtrim(substring(@strValues,@intPos+2,len(@strValues))))  
    
  insert into @tblStrList values(@strTmp)  
 end  
   
RETURN   
END  
  
--		select value from dbo.sf_ds_splitnvarchar('A,B,C')


--==============================================================================================================

--【方法二】

CREATE FUNCTION dbo.sf_SplitVarchar_Sign  
(  
  @strValues varchar(8000), --待分割字符串  
  @Sign char(1)             --分割符  
)  
RETURNS  @tblStrList TABLE (Zid int identity(1,1),value varchar(8000))  
AS  
BEGIN  
   
  declare @strTmp varchar(8000),  
   @intPos int  
  
  select @strValues=ltrim(rtrim(@strValues))  
  if right(@strValues,1) <> @Sign  
  select @strValues = @strValues + @Sign  
  
  if @strValues <> @Sign  
  begin  
    select @intPos = charindex(@Sign,@strValues)  
    while @intPos > 0  
    begin  
      select @strTmp = ltrim(rtrim(substring(@strValues,1,@intPos - 1)))  
      insert into @tblStrList values(@strTmp)     
      select @strValues = ltrim(rtrim(substring(@strValues,@intPos + 1,len(@strValues))))    
      select @intPos = charindex(@Sign,@strValues)  
      select @intPos = isnull(@intPos,0)  
    end  
  end  
   
RETURN   
END  
  
  
--		select value from dbo.sf_SplitVarchar_Sign('A,B,C',',')  
 
  
  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值