sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man konverterar en lista med nummer till (temp) tabell med SQL (SQL Server)

En lösning jag använder mycket...

Ange din lista med nummer som en VARCHAR(MAX) komma avgränsad sträng, använd sedan en av de många dbo.fn_split() funktioner som folk har skrivit på nätet.

En av många exempel online... SQL-User-Defined-Function-to-Parse-a-Delimited-Str

Dessa funktioner tar en sträng som en parameter och returnerar en tabell.

Då kan du göra saker som...

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

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


Ett alternativ är att titta på tabellvärderade parametrar. Dessa låter dig skicka en hel tabell till en lagrad procedur som en parameter. Hur beror på ramverket du använder. Är du i .NET, Java, Ruby, etc, och hur kommunicerar du med databasen?

När vi vet mer detaljer om din applikationskod kan vi visa dig både klientkoden och SQL-mallen för lagrad procedur för att använda tabellvärderade parametrar.



  1. MySQL-krypterade kolumner

  2. Återställer en MySQL-tabell tillbaka till databasen

  3. Hur kan jag använda FÖR UPPDATERING med en JOIN på Oracle?

  4. Hämta frågeresultat som dict i SQLAlchemy