Allinea a destra Numerico di Dati in SQL Server
-
09-06-2019 - |
Domanda
Sappiamo tutti T-SQL per la manipolazione di stringhe capacità a volte lascia molto a desiderare...
Ho un campo numerico che deve essere uscita in T-SQL come un testo allineato a destra della colonna.Esempio:
Value
----------
143.55
3532.13
1.75
Cosa pensate di fare in proposito?Una buona soluzione dovrebbe essere chiara e compatta, ma ricordo che c'è una cosa come "troppo intelligente".
Sono d'accordo questo è il posto sbagliato per fare questo, ma a volte siamo bloccati da forze al di fuori del nostro controllo.
Grazie.
Soluzione
Il Funzione STR ha una lunghezza opzionale, nonché un certo numero di decimali uno.
SELECT STR(123.45, 6, 1)
------
123.5
(1 row(s) affected)
Altri suggerimenti
Il modo più semplice è quello di pad a sinistra:
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 è NECESSARIO farlo in SQL è possibile utilizzare il seguente codice (il codice si presuppone che non hanno valori numerici che sono più grandi di 40 caratteri):
SELECT REPLICATE(' ', 40 - LEN(CAST(numColumn as varchar(40)))) +
CAST(numColumn AS varchar(40)) FROM YourTable