Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come convertire un elenco di numeri in una tabella (temporanea) utilizzando SQL (SQL Server)

Una soluzione che uso molto...

Fornisci il tuo elenco di numeri come VARCHAR(MAX) stringa delimitata da virgole, quindi utilizzare uno dei tanti dbo.fn_split() funzioni che le persone hanno scritto in linea.

Uno dei molti esempi online... SQL-User-Defined-Function-to-Parse-a-Delimited-Str

Queste funzioni prendono una stringa come parametro e restituiscono una tabella.

Quindi puoi fare cose come...

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

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


Un'alternativa è esaminare i parametri con valori di tabella. Questi consentono di passare un'intera tabella a una stored procedure come parametro. Come dipende dal framework che stai utilizzando. Sei in .NET, Java, Ruby, ecc, e come stai comunicando con il database?

Una volta che avremo maggiori dettagli sul codice dell'applicazione, possiamo mostrarti sia il codice client, sia il modello di procedura memorizzata SQL, per l'utilizzo dei parametri con valori di tabella.