Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将字符串拆分为多行_Sql_String_Split_Apply - Fatal编程技术网

Sql 将字符串拆分为多行

Sql 将字符串拆分为多行,sql,string,split,apply,Sql,String,Split,Apply,如何将一个字符串拆分为多行,但不使用输入表,而只使用一个字符串 例如,字符串为“abc、grt、asd、eee、78s” 输出应如下所示: abc grt 自闭症 eee 78s 我在这里看到了许多解决方案,但都使用一个表来存储一个或多个输入字符串 如何在不使用表格的情况下实现这一点 谢谢创建以下函数 CREATE FUNCTION SplitString ( @Input NVARCHAR(MAX), @Character CHAR(1) ) RETURNS @Outpu

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

例如,字符串为“abc、grt、asd、eee、78s”

输出应如下所示:

abc

grt

自闭症

eee

78s

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

如何在不使用表格的情况下实现这一点


谢谢

创建以下函数

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', ',')