2016-08-24 202 views
-4

如何將字符串拆分爲多行,但不使用輸入表,只是一個字符串?將字符串拆分爲多行

實施例中,字符串爲 'ABC,GRT,ASD,EEE,78S'

輸出應該是這樣的:

ABC

GRT

ASD

eee

78s

我在這裏看到很多解決方案,但都使用一個表格存儲一個或多個輸入字符串。

如何在不使用表格的情況下實現此目的?

謝謝

+0

這聽起來像你掙扎,因爲你的數據還沒有正確規範化。 – Phylogenesis

+0

這是什麼類型和版本的數據庫? – LukStorms

回答

0

創建以下功能。

CREATE FUNCTION SplitString 
( 
    @Input NVARCHAR(MAX), 
    @Character CHAR(1) 
) 
RETURNS @Output TABLE (
    Item NVARCHAR(1000) 
) 
AS 
BEGIN 
    DECLARE @StartIndex INT, @EndIndex INT 

    SET @StartIndex = 1 
    IF SUBSTRING(@Input, LEN(@Input) - 1, LEN(@Input)) <> @Character 
    BEGIN 
     SET @Input = @Input + @Character 
    END 

    WHILE CHARINDEX(@Character, @Input) > 0 
    BEGIN 
     SET @EndIndex = CHARINDEX(@Character, @Input) 

     INSERT INTO @Output(Item) 
     SELECT SUBSTRING(@Input, @StartIndex, @EndIndex - 1) 

     SET @Input = SUBSTRING(@Input, @EndIndex + 1, LEN(@Input)) 
    END 

    RETURN 
    END 
    GO 

使用下面的查詢你可以拆分你的字符串。

SELECT Item 
FROM dbo.SplitString('abc,grt,asd,888,78s', ',')