将字符串拆分为多行

时间:2016-08-24 15:32:31

标签: sql string split apply

如何将字符串拆分成多行但不使用输入表,只是一个字符串?

例如,字符串是'abc,grt,asd,eee,78s'

输出应该是这样的:

ABC

GRT

ASD

EEE

78S

我在这里看到许多解决方案,但都使用存储一个或多个输入字符串的表。

如何在不使用桌子的情况下实现这一目标?

由于

1 个答案:

答案 0 :(得分: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', ',')