2013-11-22 51 views
2

我使用SQL Server 2008中我有一個名爲func_SPLIT(@Str as varchar(2000))拆分功能,將採取類似「123,456,789」的字符串,並將其拆分成類似表的格式:SQL服務器:連接的數據導致以表格格式

Column: 
123 
456 
789 

所以,如果我選擇一個單獨的記錄,我可以在字符串分割表格式...後來加入他們的行列....

這裏是我試圖找出問題出去怎麼辦。

比方說,我有一個查詢:

Select Column1, Column2 
from Table1 

和它下面返回多個記錄:

Column1  Column2 
a   11111, 22222, 33333 
b   44444 
c   55555, 66666 
d   88888, 99999 

有沒有一種方法可以讓我在列2所有這些值轉換成表格格式,所以我可以稍後加入他們...像這樣的格式如下:

Column1  Column2 
a   11111 
a   22222 
a   33333 
b   44444 
c   55555 
c   66666 
d   88888 
d   99999 

這是分裂funcion

ALTER FUNCTION [dbo].[Split] 
( 
    @RowData NVARCHAR(MAX), 
    @Delimeter NVARCHAR(MAX) 
) 
RETURNS @RtnValue TABLE 
(
    ID INT IDENTITY(1,1), 
    Data NVARCHAR(MAX) 
) 
AS 
BEGIN 
    DECLARE @Iterator INT 
    SET @Iterator = 1 

    DECLARE @FoundIndex INT 
    SET @FoundIndex = CHARINDEX(@Delimeter,@RowData) 

    WHILE (@FoundIndex>0) 
    BEGIN 
     INSERT INTO @RtnValue (data) 
     SELECT 
      Data = LTRIM(RTRIM(SUBSTRING(@RowData, 1, @FoundIndex - 1))) 

     SET @RowData = SUBSTRING(@RowData, 
       @FoundIndex + DATALENGTH(@Delimeter)/2, 
       LEN(@RowData)) 

     SET @Iterator = @Iterator + 1 
     SET @FoundIndex = CHARINDEX(@Delimeter, @RowData) 
    END 

    INSERT INTO @RtnValue (Data) 
    SELECT Data = LTRIM(RTRIM(@RowData)) 

    RETURN 
END 

謝謝

+0

我們可以看到分割功能,你有嗎? –

+0

更新了分割功能。感謝您關注這個... – milacay

回答

相關問題