1. 程式人生 > >sqlserver中利用Tran_sql把逗號分隔的字串拆成臨時表

sqlserver中利用Tran_sql把逗號分隔的字串拆成臨時表

在與資料庫互動的過程中,我們經常需要把一串ID組成的字串當作引數傳給儲存過程獲取資料。很多時候我們希望把這個字串轉成集合以方便用於in操作。 有兩種方式可以方便地把這個以某種符號分隔的ID字串轉成臨時表。 

方式一:通過charindex和substring。 

程式碼 /************************************************************
 * Code formatted by SoftTree SQL Assistant ?v6.5.278
 * Time: 2015/8/4 11:22:40
 ************************************************************/
CREATE FUNCTION func_splitstring
(
 @str       NVARCHAR(MAX),
 @split     VARCHAR(10)
)
RETURNS @t TABLE(c1 VARCHAR(100))
AS
BEGIN
 DECLARE @i INT
 DECLARE @s INT
 SET @i = 1
 SET @s = 1
 WHILE (@i > 0)
 BEGIN
     SET @i = CHARINDEX(@split, @str, @s)
     IF (@i > 0)
     BEGIN
         INSERT @t
           (
             c1
           )
         VALUES
           (
             SUBSTRING(@str, @s, @i
[email protected]
)
           )
     END
     ELSE
     BEGIN
         INSERT @t
           (
             c1
           )
         VALUES
           (
             SUBSTRING(@str, @s, LEN(@str) [email protected] + 1)
           )
     END
     SET @s = @i + 1
 END
 RETURN
END

執行:select * from  dbo.func_splitstring('1,2,3,4,5,6', ',')