Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como converter lista de números em tabela (temp) usando SQL (SQL Server)


Uma solução que uso muito...

Forneça sua lista de números como um VARCHAR(MAX) string delimitada por vírgula, então use um dos muitos dbo.fn_split() funções que as pessoas escreveram online.

Um dos muitos exemplos on-line... SQL-User-Defined-Function-to-Parse-a-Delimited-Str

Essas funções recebem uma string como parâmetro e retornam uma tabela.

Então você pode fazer coisas como...
INSERT INTO @temp SELECT * FROM dbo.split(@myList)

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




Uma alternativa é examinar os Parâmetros com valor de tabela. Eles permitem que você passe uma tabela inteira para um procedimento armazenado como um parâmetro. Como depende da estrutura que você está usando. Você está em .NET, Java, Ruby, etc, e como está se comunicando com o banco de dados?

Assim que soubermos mais detalhes sobre o código do aplicativo, podemos mostrar o código do cliente e o modelo de procedimento armazenado SQL, para usar Parâmetros com valor de tabela.