2009-09-16 8 views
0

Dans ma procédure stockée, je passe un filtre (en utilisant la clause "WHERE Column IN") en tant que paramètre. La valeur du paramètre est donnée en CSV. Quelle est la meilleure méthode pour convertir ce fichier CSV en un jeu d'enregistrements?COMMENT convertir CSV en jeu d'enregistrements dans T-SQL?

Exemple: -

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

et je dois passer les noms comme un paramètre qui est une chaîne CSV comme

"John,Joe,Jerry,James"

.

Répondre

1

Découvrez les articles d'Erland Sommarskog. Il a des informations détaillées sur les différentes façons de faire ce genre de chose:

Arrays and Lists in SQL Server

+0

Thats grand poste! – Faiz

1

Créer une fonction de chaîne split

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

La fonction split est mentionnée dans le lien en première réponse. – Faiz

+0

Je sais, mais nous utilisons cela, donc je pensais qu'un exemple aiderait –

Questions connexes