2009-09-16 48 views
0

在我的存儲過程中,我傳遞一個過濾器(使用「WHERE Column IN」子句)作爲參數。該參數的值以CSV形式給出。將此CSV轉換爲記錄集的最佳方法是什麼?如何將CSV轉換爲T-SQL中的記錄集?

實施例: -

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

,我需要的名稱作爲參數傳遞其是CSV串像

"John,Joe,Jerry,James"

回答

1

創建分割字符串函數

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

相關問題