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

Sådan konverteres liste over tal til (temp) tabel ved hjælp af SQL (SQL Server)

En løsning jeg bruger meget...

Angiv din liste over numre som en VARCHAR(MAX) kommaslettet streng, og brug derefter en af ​​de mange dbo.fn_split() funktioner, som folk har skrevet på nettet.

En af mange eksempler online... SQL-User-Defined-Function-to-Parse-a-Delimited-Str

Disse funktioner tager en streng som en parameter og returnerer en tabel.

Så kan du gøre ting som...

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

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


Et alternativ er at se på tabelværdiparametre. Disse giver dig mulighed for at overføre en hel tabel til en lagret procedure som en parameter. Hvordan afhænger af den ramme, du bruger. Er du i .NET, Java, Ruby osv., og hvordan kommunikerer du med databasen?

Når vi kender flere detaljer om din applikationskode, kan vi vise dig både klientkoden og SQL-skabelonen til lagrede procedurer til brug af Table Valued Parameters.



  1. Praktisk måde at pakke lange SQL-sætninger ind i javascript

  2. brug kolonneværdi som kolonnenavn mysql

  3. Betydning af id =LAST_INSERT_ID(id)

  4. Hvordan fungerer FULLTEXT INDEXS på flere kolonner?