SqlServer Split函数

本文介绍如何使用SQL的存储过程功能来实现将字符串按照特定字符分割,并将结果存储到数据库表中。通过实例演示了如何定义存储过程,以及如何在实际应用中使用此功能进行数据处理。

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

Create FUNCTION [dbo].[SplitToTable] (   
	  @SplitString nvarchar(max),     
	  @Separator nvarchar(10)=' ' 
)
 RETURNS @SplitStringsTable TABLE ( [id] int identity(1,1), [value] nvarchar(max) ) 
 AS
  BEGIN  
  	   DECLARE @CurrentIndex int;   
  	   DECLARE @NextIndex int;
  	   DECLARE @ReturnText nvarchar(max);     
  	   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

  使用

declare @TR NVARCHAR(50)
declare @TRS NVARCHAR(1000)
SET @TRS='123,456,789'
set @TR=(select top 1 VALUE from dbo.SplitToTable(@TRS,',') order by NEWID()) --最外面一定要加括号
PRINT(@TR)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值