Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server (2008) Lulus ArrayList atau String ke SP untuk IN()

Anda dapat menggunakan fungsi Buatan Pengguna seperti

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

Yang menerima daftar id yang dipisahkan koma nvarchar dan mengembalikan tabel id tersebut sebagai int. Anda kemudian dapat bergabung di tabel yang dikembalikan dalam prosedur tersimpan Anda seperti itu -

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. Mengembalikan Daftar Fungsi Partisi di SQL Server (T-SQL)

  2. Bagaimana cara menemukan semua prosedur tersimpan yang menyisipkan, memperbarui, atau menghapus catatan?

  3. Fungsi SQL Server TRIM, LTRIM, dan RTRIM

  4. Perbaiki "tanggal tidak kompatibel dengan int" di SQL Server saat Menambah atau Mengurangi dari Tanggal

  5. Memahami Masalah Baca Kotor dengan SQL Server