root/trunk/SQL/Functions/SplitAsTable.txt @ 911

Wersja 364, 2.7 KB (wprowadzona przez marek, 17 years temu)

fixes #76

  • Właściwość svn:mime-type zmieniona na application/octet-stream
Line 
1if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SplitAsTable]') and xtype in (N'FN', N'IF', N'TF'))
2drop function [dbo].[SplitAsTable]
3GO
4
5SET QUOTED_IDENTIFIER OFF
6GO
7SET ANSI_NULLS OFF
8GO
9
10
11CREATE FUNCTION dbo.SplitAsTable(@String nvarchar(4000), @Delimiter char(1))
12RETURNS @Results TABLE (Items nvarchar(4000))
13AS
14
15
16    BEGIN
17    DECLARE @INDEX INT
18    DECLARE @SLICE nvarchar(4000)
19    -- HAVE TO SET TO 1 SO IT DOESNT EQUAL Z
20    --     ERO FIRST TIME IN LOOP
21    SELECT @INDEX = 1
22    WHILE @INDEX !=0
23
24
25        BEGIN     
26              -- GET THE INDEX OF THE FIRST OCCURENCE OF THE SPLIT CHARACTER
27              SELECT @INDEX = CHARINDEX(@Delimiter,@STRING)
28              -- NOW PUSH EVERYTHING TO THE LEFT OF IT INTO THE SLICE VARIABLE
29              IF @INDEX !=0
30                    SELECT @SLICE = LEFT(@STRING,@INDEX - 1)
31              ELSE
32                    SELECT @SLICE = @STRING
33              -- PUT THE ITEM INTO THE RESULTS SET
34              INSERT INTO @Results(Items) VALUES(@SLICE)
35              -- CHOP THE ITEM REMOVED OFF THE MAIN STRING
36              SELECT @STRING = RIGHT(@STRING,LEN(@STRING) - @INDEX)
37              -- BREAK OUT IF WE ARE DONE
38              IF LEN(@STRING) = 0 BREAK
39    END
40    RETURN
41END
42
43GO
44SET QUOTED_IDENTIFIER OFF
45GO
46SET ANSI_NULLS ON
47GO
48
Notatka: Zobacz TracBrowser aby uzyskać więcej informacji.