如何将CSV转换为T-SQL中的记录集?

如何将CSV转换为T-SQL中的记录集?

问题描述:

在我的存储过程中,我传递一个过滤器(使用“WHERE Column IN”子句)作为参数。该参数的值以CSV形式给出。将此CSV转换为记录集的最佳方法是什么?如何将CSV转换为T-SQL中的记录集?

实施例: -

SELECT * FROM Employee WHERE Name IN ('John','Joe','Jerry','James')

,我需要的名称作为参数传递其是CSV串像

"John,Joe,Jerry,James"

看看Erland Sommarskog的文章。他做这种事情的不同方法的深入信息:

Arrays and Lists in SQL Server

+0

那是一个伟大的职位! – Faiz 2009-09-16 10:17:57

创建分割字符串函数

CREATE FUNCTION [dbo].[SplitString] 
(
     @String VARCHAR(MAX) , 
     @Delimiter VARCHAR(10) 
) 
RETURNS @RetTable TABLE(
     String varchar(MAX) 
) 
AS 
BEGIN 
    DECLARE @i INT , 
      @j INT 
    SELECT @i = 1 
    WHILE @i <= LEN(@String) 
    BEGIN 
     SELECT @j = CHARINDEX(@Delimiter, @String, @i) 
     IF @j = 0 
     BEGIN 
      SELECT @j = LEN(@String) + 1 
     END 
     INSERT @RetTable SELECT SUBSTRING(@String, @i, @j - @i) 
     SELECT @i = @j + LEN(@Delimiter) 
    END 
    RETURN 
END 
+0

在第一个答案的链接中提到了拆分功能。 – Faiz 2009-09-16 10:01:25

+0

我知道,但我们使用这个,所以我认为一个例子会有所帮助 – 2009-09-16 10:48:32