Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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 Server:将单个列值逗号拆分为多个列_Sql_Sql Server - Fatal编程技术网

SQL Server:将单个列值逗号拆分为多个列

SQL Server:将单个列值逗号拆分为多个列,sql,sql-server,Sql,Sql Server,现在我刚接触SQL Server,尝试拆分一个用逗号分隔的列值,我希望每个数据都有一个单独的列 2270,2290,2234,2245,2256 我希望结果是这样的: | Split column | 2270 2290 2234 有什么想法会被欣赏,因为我在这里的方式的深度?当我使用SQL Server 2017时,我有String\u split并将兼容性设置为140。但我得到的只是 2270,2290,2234 2270,2290,2234 2

现在我刚接触SQL Server,尝试拆分一个用逗号分隔的列值,我希望每个数据都有一个单独的列

2270,2290,2234,2245,2256
我希望结果是这样的:

| Split column |
     2270
     2290
     2234
有什么想法会被欣赏,因为我在这里的方式的深度?当我使用SQL Server 2017时,我有
String\u split
并将兼容性设置为140。但我得到的只是

  2270,2290,2234
  2270,2290,2234
  2270,2290,2234
这是一个查询,其中的输出将与我在问题中发布的方式相同,需要拆分:

SELECT ERSBusinessLogic_InputDataSeries 
FROM [AnimalProductsCoSD].[CoSD].[ERSBusinessLogic]
WHERE
    ERSBusinessLogic_InputGeographyDimensionID = 7493
    AND ERSBusinessLogic_InputTimeDimensionValue = 'all months'
    AND ERSBusinessLogic_Type = 'HS10 aggregation'; 

您遇到了一个问题,因为
split\u string()
无法保持结果的顺序。啊!这已经是对Microsoft的功能请求

字符串的格式看起来非常规范。如果是这样,您只需使用
substring()

如果顺序不重要,可以使用
split\u string()


. . .
string\u split()
有效。如果SQL不起作用,请发布您尝试过的SQL。从[AnimalProductsCSSD].[CoSD].[ERSBusinessLogic]中选择ERSBusinessLogic\u InputDataSeries其中,ERSBusinessLogic_InputGeographyDimensionID=7493,ERSBusinessLogic_InputDimensionValue='all months'和ERSBusinessLogic_Type='HS10 aggregation',这是一个查询,其中输出将与我在问题中发布的方式相同,这个输出需要拆分,您实际运行的查询是什么,它生成了这3个重复的行?
SELECT LEFT(ERSBusinessLogic_InputDataSeries, 4) as str1,
       SUBSTRING(ERSBusinessLogic_InputDataSeries, 5, 4) as str2,
       RIGHT(ERSBusinessLogic_InputDataSeries, 4) as str3
FROM [AnimalProductsCoSD].[CoSD].[ERSBusinessLogic]
WHERE ERSBusinessLogic_InputGeographyDimensionID = 7493 AND
      ERSBusinessLogic_InputTimeDimensionValue = 'all months' AND
      ERSBusinessLogic_Type = 'HS10 aggregation'; 
SELECT ss.*
FROM [AnimalProductsCoSD].[CoSD].[ERSBusinessLogic] ebl OUTER APPLY
     (SELECT MAX(CASE WHEN seqnum = 1 THEN val END) as str1,
             MAX(CASE WHEN seqnum = 2 THEN val END) as str2
             MAX(CASE WHEN seqnum = 3 THEN val END) as str3
      FROM (SELECT ss.val, ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) as seqnum
            FROM split_string(ERSBusinessLogic_InputDataSeries, ',') ss(val)
           ) ss
     ) ss
WHERE ERSBusinessLogic_InputGeographyDimensionID = 7493 AND
      ERSBusinessLogic_InputTimeDimensionValue = 'all months' AND
      ERSBusinessLogic_Type = 'HS10 aggregation';