Enjoy Your SQL fn_MVParam .. altra correzione - Francesco Quaratino

fn_MVParam .. altra correzione

Dopo aver incontrato in passato problemi con i blank, stavolta è il turno dei caratteri speciali quali Tab, Carriege return, Line feed. Ho apportato una lieve modifica alla funzione:

create function [dbo].[fn_MVParam]
    (@repparam nvarchar(4000), @delim char(1)= ',')
returns
    @values table (param nvarchar(4000))as
begin

declare @chrind int
declare @piece nvarchar(4000)
select @chrind = 1
while @chrind > 0
  begin
        select @chrind = charindex(@delim,@repparam)
  
  if @chrind > 0
            select @piece = left(@repparam,@chrind - 1)
  else
            select @piece = @repparam
       
        set @piece = replace(@piece, char(13), ''); -- carriage return
        set @piece = replace(@piece, char(10), ''); -- line feed
        set @piece = replace(@piece, char(9), ''); -- tab

        set @piece = ltrim ( rtrim (@piece) ); -- blank
       
        insert @values(param) values (@piece)
       
  select @repparam = right(@repparam,len(@repparam) - @chrind)
  if len(@repparam) = 0 break  
    end
return

/*
HOW TO USE IT:
 
 select
  nome_colonna = param
 from
  dbo.[fn_MVParam] ('19, 20, 21,22, xyz', ',')
 order by
  param desc
*/

end

GO

Filed under: ,

Comments

No Comments