2016-08-24 160 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', ',')