Sql 使用每个CSV值创建行

Sql 使用每个CSV值创建行,sql,sql-server,sql-server-2000,Sql,Sql Server,Sql Server 2000,如果不使用CTE,我如何更改这些逗号分隔的值并得到这样的结果,因为我使用的是SQL SERVER 2000,如果不使用循环会更好,因为后者的数据将是巨大的 ID Dates Qty Secs DayPart CO138491-02 06/10/2013,06/11/2013,06/12/2013,06/13/2013 4 6.00 Morning 如果

如果不使用CTE,我如何更改这些逗号分隔的值并得到这样的结果,因为我使用的是SQL SERVER 2000,如果不使用循环会更好,因为后者的数据将是巨大的

ID          Dates                                          Qty      Secs    DayPart

CO138491-02 06/10/2013,06/11/2013,06/12/2013,06/13/2013    4        6.00    Morning

如果您不想使用CTE或循环,请尝试使用带有附加数字表的方法,请提供任何提示或限制我搜索的链接

比如:

CO138491-02 06/10/2013  4   6.00    Morning
CO138491-02 06/11/2013  4   6.00    Morning
CO138491-02 06/12/2013  4   6.00    Morning
CO138491-02 06/13/2013  4   6.00    Morning

如果您不想使用CTE或循环,请尝试使用附加数字表的方法:

比如:

CO138491-02 06/10/2013  4   6.00    Morning
CO138491-02 06/11/2013  4   6.00    Morning
CO138491-02 06/12/2013  4   6.00    Morning
CO138491-02 06/13/2013  4   6.00    Morning
试试这个

CREATE FUNCTION inline_split_me (@param varchar(7998)) RETURNS TABLE AS
   RETURN(SELECT substring(',' + @param + ',', Number + 1,
                    charindex(',', ',' + @param + ',', Number + 1) - Number - 1)
                 AS Value
          FROM   Numbers
          WHERE  Number <= len(',' + @param + ',') - 1
            AND  substring(',' + @param + ',', Number, 1) = ',')
检查以下链接以供参考

试试这个

CREATE FUNCTION inline_split_me (@param varchar(7998)) RETURNS TABLE AS
   RETURN(SELECT substring(',' + @param + ',', Number + 1,
                    charindex(',', ',' + @param + ',', Number + 1) - Number - 1)
                 AS Value
          FROM   Numbers
          WHERE  Number <= len(',' + @param + ',') - 1
            AND  substring(',' + @param + ',', Number, 1) = ',')
检查以下链接以供参考


事实上,我不想要一个拆分器,而是每个值都有拆分的字符串,此外,因为它是一个巨大的数据,所以使用函数是否明智?我不知道其他方法,除了本例中的函数。最有效的方法是使用CLR函数,但它在MSSQLS2000中不起作用。事实上,我不想要一个拆分器,而是每个值都有拆分的字符串。此外,由于数据量很大,使用函数明智吗?我不知道其他方法,除了本例中的函数。最有效的方法是使用CLR函数,但它在MSSQLS2000中不起作用