Pergunta

Todos nós sabemos que as capacidades de manipulação de strings do T-SQL às vezes deixam muito a desejar...

Eu tenho um campo numérico que precisa ser gerado no T-SQL como uma coluna de texto alinhada à direita.Exemplo:

Value
----------
   143.55
  3532.13
     1.75

Como você faria isso?Uma boa solução deve ser clara e compacta, mas lembre-se de que existe algo “inteligente demais”.

Concordo que este é o lugar errado para fazer isso, mas às vezes ficamos presos por forças fora do nosso controle.

Obrigado.

Foi útil?

Solução

O Função STR tem um argumento de comprimento opcional, bem como um argumento de número decimais.

SELECT STR(123.45, 6, 1)

------
 123.5

(1 row(s) affected)

Outras dicas

A maneira mais fácil é preencher para a esquerda:

CREATE FUNCTION PadLeft(@PadString nvarchar(100), @PadLength int)
RETURNS nvarchar(200)
AS
begin
return  replicate(' ',@padlength-len(@PadString)) + @PadString
end
go
print dbo.PadLeft('123.456', 20)
print dbo.PadLeft('1.23', 20)

Se você DEVE fazer isso em SQL, você pode usar o seguinte código (este código pressupõe que você não possui números maiores que 40 caracteres):

SELECT REPLICATE(' ', 40 - LEN(CAST(numColumn as varchar(40)))) + 
CAST(numColumn AS varchar(40)) FROM YourTable
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top