代码之家  ›  专栏  ›  技术社区  ›  Faiz

如何将csv转换为t-sql中的记录集?

  •  0
  • Faiz  · 技术社区  · 17 年前

    在我的存储过程中,我将传递一个过滤器(使用“where column in”子句)作为参数。参数值以csv形式给出。将此csv转换为记录集的最佳方法是什么?

    例子:

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

    我需要把这些名字作为一个参数传递,这个参数是一个csv字符串,就像

    "John,Joe,Jerry,James"

    .

    2 回复  |  直到 17 年前
        1
  •  1
  •   LukeH    17 年前

    看看Erland Sommarskog的文章。他对做这种事情的不同方式有着深入的了解:

    Arrays and Lists in SQL Server

        2
  •  1
  •   Adriaan Stander    17 年前

    创建拆分字符串函数

    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