SQL 循环表的数据,拆分函数

      

        遇到两个小知识点。自己总结一下,方便自己查阅,也是为了让自己养成一个习惯。一个写博客的习惯。上次看了一遍文章。讲的是写博客的好处。

自己看了,也有所感触。我也知道,不一定能坚持下来。但我想尝试一下。尝试养成这样一个习惯。

  

     1 SQL循环表里的数据

     

select * into #t1 from Userinfo
declare @id varchar(2000);
while (exists(select ProjectID from #t1))
begin
     select @id=userid from #t1
     delete #t1 where ProjectID=@id
end
drop table #t1

     2  SQL拆分函数

USE [XSMAN_DB]
GO
/****** Object:  UserDefinedFunction [dbo].[func_SplitToTable]    Script Date: 12/03/2012 23:25:37 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================  
-- Author:  cxy  
-- Create date: 2010-10-28  
-- Description: 根据分隔符分割字符串,返回表  
-- =============================================  
Create FUNCTION [dbo].[func_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

--执行函数 1
select * from dbo.func_SplitToTable('1,2',',')

--执行函数 2
select * from dbo.func_SplitToTable('1-2-3','-')

--执行函数 3
select * from dbo.func_SplitToTable('1 2 3',' ')

  执行结果:

         不积跬步,无以至千里;不积小流,无以成江海.希望我能坚持下去。努力!

     

原文地址:https://www.cnblogs.com/for917157ever/p/2800591.html