Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment convertir une liste de nombres en table (temp) à l'aide de SQL (SQL Server)

Une solution que j'utilise beaucoup...

Fournissez votre liste de nombres sous la forme d'un VARCHAR(MAX) chaîne délimitée par des virgules, puis utilisez l'un des nombreux dbo.fn_split() fonctions que les gens ont écrites en ligne.

L'un des beaucoup exemples en ligne... SQL-User-Defined-Function-to-Parse-a-Delimited-Str

Ces fonctions prennent une chaîne en paramètre et renvoient une table.

Ensuite, vous pouvez faire des choses comme...

INSERT INTO @temp SELECT * FROM dbo.split(@myList)

SELECT
  *
FROM
  myTable
INNER JOIN
  dbo.split(@myList) AS list
    ON list.id = myTable.id


Une alternative consiste à examiner les paramètres de valeur de table. Celles-ci vous permettent de transmettre une table entière à une procédure stockée en tant que paramètre. Comment dépend du cadre que vous utilisez. Êtes-vous en .NET, Java, Ruby, etc., et comment communiquez-vous avec la base de données ?

Une fois que nous connaissons plus de détails sur votre code d'application, nous pouvons vous montrer à la fois le code client et le modèle de procédure stockée SQL, pour l'utilisation des paramètres de valeur de table.