SQL Server procedure declare a list

后端 未结 6 634
粉色の甜心
粉色の甜心 2020-12-24 05:28

My SQL code is fairly simple. I\'m trying to select some data from a database like this:

SELECT * FROM DBTable
WHERE id IN (1,2,5,7,10)

I w

6条回答
  •  甜味超标
    2020-12-24 05:52

    If you want input comma separated string as input & apply in in query in that then you can make Function like:

    create FUNCTION [dbo].[Split](@String varchar(MAX), @Delimiter char(1))       
        returns @temptable TABLE (items varchar(MAX))       
        as       
        begin      
            declare @idx int       
            declare @slice varchar(8000)       
    
            select @idx = 1       
                if len(@String)<1 or @String is null  return       
    
            while @idx!= 0       
            begin       
                set @idx = charindex(@Delimiter,@String)       
                if @idx!=0       
                    set @slice = left(@String,@idx - 1)       
                else       
                    set @slice = @String       
    
                if(len(@slice)>0)  
                    insert into @temptable(Items) values(@slice)       
    
                set @String = right(@String,len(@String) - @idx)       
                if len(@String) = 0 break       
            end   
        return 
        end;
    

    You can use it like :

    Declare @Values VARCHAR(MAX);
    
    set @Values ='1,2,5,7,10';
    Select * from DBTable
        Where id  in (select items from [dbo].[Split] (@Values, ',') )
    

    Alternatively if you don't have comma-separated string as input, You can try Table variable OR TableType Or Temp table like: INSERT using LIST into Stored Procedure

提交回复
热议问题