КАК конвертировать CSV в набор записей внутри T-SQL? - PullRequest
0 голосов
/ 16 сентября 2009

В моей хранимой процедуре я передаю фильтр (используя предложение "WHERE Column IN") в качестве параметра. Значение параметра дано как CSV. Каков наилучший метод для преобразования этого CSV в набор записей.

Пример: -

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

и мне нужно передать имена в качестве параметра, который представляет собой строку CSV, такую ​​как

"John,Joe,Jerry,James"

.

Ответы [ 2 ]

1 голос
/ 16 сентября 2009

Создать функцию разделения строк

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
1 голос
/ 16 сентября 2009

Взгляните на статьи Эрланда Соммарскога. У него есть всесторонняя информация о различных способах делать такие вещи:

Массивы и списки в SQL Server

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...