Alinhar dados numéricos à direita no SQL Server
-
09-06-2019 - |
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.
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