分拆字符串返回表

这是一个关于创建SQL函数的博客,介绍了如何使用T-SQL创建两个名为[dbo].[Split]和[dbo].[f_split]的函数,这两个函数用于将字符串按照指定分隔符拆分成表格形式。函数[dbo].[Split]不返回空行,而[dbo].[f_split]则可以处理包含空行的情况。博客内容详细展示了函数的定义和工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


Create FUNCTION [dbo].[Split]  --不返回空行
(
 @SplitString VARCHAR(8000),-- nvarchar(4000)
 @Separator VARCHAR(2) = ','
)
RETURNS @SplitStringsTable TABLE
(
 [id] INT IDENTITY(1,1),
 [value] VARCHAR(8000)-- nvarchar(4000)
)
AS
BEGIN
    DECLARE @CurrentIndex INT;
    DECLARE @NextIndex INT;
    DECLARE @ReturnText VARCHAR(8000);-- nvarchar(4000)
    SELECT @CurrentIndex=1;
    WHILE(@CurrentIndex<=LEN(@SplitString)) 
    BEGIN
        SELECT @NextIndex=CHARINDEX(@Separator,@SplitString,@CurrentIndex);
        IF(@NextIndex=0 OR @NextIndex IS NULL)
            SELECT @NextIndex=LEN(@SplitString)+1;
        
        SELECT @ReturnText=SUBSTRING(@SplitString,@CurrentIndex,@NextIndex-@CurrentIndex);

        INSERT INTO @SplitStringsTable([value])
        VALUES(@ReturnText);
        
        SELECT @CurrentIndex=@NextIndex+1;
    END
    RETURN;
END

 

 

CREATE function   [dbo].[f_split](@c   varchar(max),@split   varchar(2))      --返回空行
  returns   @t   table(col   varchar(8000))     
  as     
    begin     
      
      while(charindex(@split,@c)<>0)     
        begin     
          insert   @t(col)   values   (substring(@c,1,charindex(@split,@c)-1))     
          set   @c   =   stuff(@c,1,charindex(@split,@c),'')     
        end     
      insert   @t(col)   values   (@c)     
      return     
    end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值