Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Lílian Barroso

Formatar saídas de colunas individulamente, em resultados modo texto

Recommended Posts

Bom dia pessoal!

 

Preciso de uma solução para adequar o tamanho das colunas individualmente em resultados de query modo texto.

 

Motivo: preciso passar isso para um documento no word.

 

Verifiquei no Management Studio que há a opção de tamanho máximo das colunas, mas isso afeta todas as colunas...

 

 

Por exemplo, se eu fizer o select abaixo:

 

select nome, endereco from funcionarios;

 

eu gostaria que a coluna "nome" retornasse com largura de 30 caracteres, e a coluna "endereco", com largura de 100 caracteres; se algum resultado de endereço vier com mais de 100 caracteres, o restante seria exibido na linha abaixo.

 

 

A título de comparação, no Oracle a ferramenta SQL*Plus tem um comando específico para fazer isso, que seria parecido com:

 

column nome for a30

column endereco for a100

 

 

Alguém sabe se isso é possível??

 

 

Abçs,

Lílian Barroso

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O substr limita o tamanho, contiuar um outra linha seria um complicador em sql.

 

Talvez criar outra coluna

 

 

Select substr(campo1,1,100) campo1a,substr(campo1,101,100) campo1b ...

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

a formatacao somente funciona se vc precisar da saida em modo TEXTO. Se for para saida de arquivo formatado, vai precisar criar um .fmt e usar o SSIS

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Lilian.

 

Segue duas functions que desenvolvi e acredito que possam te ajudar:

Create function [dbo].[lPad]
(   @texto       varchar(4000),
    @Caracter    char(1),
    @QtdCaracter int
)
returns varchar(4000)
as
begin
Declare @Retorno varchar(4000)


    select @Retorno = right(replicate(@caracter,@qtdCaracter) + @texto,@qtdCaracter)


return @Retorno

end

go

Create function [dbo].[rPad]
(	@texto       varchar(4000),
    @Caracter    char(1),
    @QtdCaracter int
)
returns varchar(4000)
as
begin
Declare @Retorno varchar(4000)


    select @Retorno = Left(@texto + replicate(@caracter,@qtdCaracter),@qtdCaracter)


return @Retorno

end

Exemplo:

select dbo.lPad('123456789', '0', 30)

Retorno:

000000000000000000000123456789

select dbo.rPad('123456789', '0', 30)

Retorno:

123456789000000000000000000000

 

Obs:

O carácter '0' pode ser substituído por qualquer outro carácter de acordo com sua necessidade, assim como o tamanho da string retornada.

 

Fico à disposição.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.