如何将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"
。
答
创建分割字符串函数
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
那是一个伟大的职位! – Faiz 2009-09-16 10:17:57