Ir para conteúdo
Fórum Script Brasil
  • 0

Ordenação de texto delimitado


ursolouco

Pergunta

Salve, 

 

Esses dias precisei ordenar uma coluna de texto (string) delimitada no SQL Server.

 

/**
 * funcOrdenaTextoDelimitado()
 *
 * ordena o conteúdo de uma string
 *
 * @author wellington rodrigues
 */
create function dbo.funcOrdenaTextoDelimitado(@texto varchar(4000), @separador varchar(1)) returns varchar(4000)
as
begin
	declare @tmp_table table(texto varchar(4000));
	declare @posicao_delimitador int = 1;
	declare @inicio_pesquisa int = 1;
	declare @subtexto varchar(4000);
	set @texto = @texto + @separador;
	declare @texto_ordenado varchar(4000) = '';
	while charindex(@separador, @texto, @inicio_pesquisa) > 	
		begin
			set @posicao_delimitador = charindex(@separador, @texto, @inicio_pesquisa);
			set @subtexto = substring(@texto, @inicio_pesquisa, @posicao_delimitador - @inicio_pesquisa);			
			insert into @tmp_table(texto) values(@subtexto);
			set @inicio_pesquisa = @posicao_delimitador + 1;
	end	
	set @texto_ordenado = stuff((select coalesce(texto + @separador, '') from @tmp_table order by ltrim(rtrim(texto)) asc for xml path('')), 1, ,'');
	set @texto_ordenado = substring(@texto_ordenado, , len(@texto_ordenado));
	return @texto_ordenado;
end
go

Espero que possa ser útil.

[]s

Editado por ursolouco
O code removeu os '0's
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...