Dynamic WHERE from delimited list param

Latest post 07-29-2008 4:54 PM by Nick. 0 replies.
  • 07-29-2008 4:54 PM

    • Nick
    • Top 10 Contributor
    • Joined on 04-28-2008
    • Posts 27

    Dynamic WHERE from delimited list param

     

    @Customers

    varchar(8000) = null

    Declare @Delimiter varchar(2)
    Declare @Check nvarchar(1)
    Declare @Pos int
    Declare @Cnt int
    Declare @NextPos int
    Declare @NextString varchar(8000)
    Declare @Filter varchar(8000)

    SET @Delimiter='|'

    --Parse Customer Parameter
    --Build Statement - CustomerCode = 'C1' OR CustomerCode='C2' ...
    IF NOT @Customers IS NULL
    BEGIN
    SET @Check = right(@Customers,1)
     
     --Check for trailing Comma, if not exists, INSERT
     if (@Check <> @Delimiter )
     SET @Customers = @Customers + @Delimiter


     SET @Pos = charindex(@Delimiter,@Customers)
     SET @NextPos = 1
     SET @Cnt = 0

     --Loop while there is still a delim in the String
     while (@Pos <>  0) 
     begin
     SET @NextString = substring(@Customers,1,@Pos - 1)

     IF @Cnt > 0 And len(@NextString)>0
      SELECT @CustomerSQL = @CustomerSQL + ' OR ' + 'CompanyCode=''' + @NextString + ''''
     ELSE IF len(@NextString)>0
      SELECT @CustomerSQL = 'CompanyCode=''' + @NextString  + ''''
      
     SET @Customers = substring(@Customers,@pos +1,len(@Customers))
     
     SET @Cnt =  @Cnt + 1
     SET @NextPos = @Pos
     SET @Pos  = charindex(@Delimiter,@Customers)
     end
    END

Page 1 of 1 (1 items) | RSS
Forums to discuss Microsoft ASP.Net Development and SQL
Powered by Community Server (Non-Commercial Edition), by Telligent Systems