Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server (2008) Предаване на ArrayList или String към SP за IN()

Можете да използвате дефинирана от потребителя функция като

CREATE function [dbo].[csl_to_table] ( @list nvarchar(MAX) )
RETURNS @list_table TABLE ([id] INT)
AS
BEGIN
    DECLARE     @index INT,
            @start_index INT,
            @id INT

    SELECT @index = 1 
    SELECT @start_index = 1
    WHILE @index <= DATALENGTH(@list)
    BEGIN

        IF SUBSTRING(@list,@index,1) = ','
        BEGIN

            SELECT @id = CAST(SUBSTRING(@list, @start_index, @index - @start_index ) AS INT)
            INSERT @list_table ([id]) VALUES (@id)
            SELECT @start_index = @index + 1
        END
        SELECT @index  = @index + 1
    END
    SELECT @id = CAST(SUBSTRING(@list, @start_index, @index - @start_index ) AS INT)
    INSERT @list_table ([id]) VALUES (@id)
    RETURN
END

Което приема nvarchar разделен със запетая списък с идентификатори и връща таблица с тези идентификатори като int. След това можете да се присъедините към върнатата таблица във вашата съхранена процедура така -

DECLARE @passed_in_ids TABLE (id INT)

INSERT INTO @passed_in_ids (id)
  SELECT 
    id 
  FROM
    [dbo].[csl_to_table] (@your_passed_in_csl)

SELECT *
FROM 
myTable
INNER JOIN
@passed_in_ids ids
ON
myTable.id = ids.id


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Въведение в защитата на ниво ред в SQL Server

  2. можем ли да имаме външен ключ, който не е първичен ключ в никоя друга таблица?

  3. 5 предимства на проактивното наблюдение на ефективността на базата данни

  4. PHP sqlsrv_connect към SQL Server:Възникна грешка, свързана с мрежата или специфична за екземпляр, при установяване на връзка към SQL Server

  5. Изберете, модифицирайте и вмъкнете в същата таблица