2008-09-11 146 views
9

Todos sabemos las capacidades de manipulación de cadenas de T-SQL a veces deja mucho que desear ...texto Alinear a la derecha en SQL Server

Tengo un campo numérico que tiene que ser de salida en T-SQL como alineado a la derecha columna de texto Ejemplo:

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

¿Qué harías al respecto? Una buena solución debe ser clara y compacta, pero recuerde que existe algo así como "demasiado inteligente".

Acepto que este es el lugar equivocado para hacer esto, pero a veces estamos atrapados por fuerzas fuera de nuestro control.

Gracias.

Respuesta

13

El STR function tiene un argumento de longitud opcional, así como un número de decimales.

SELECT STR(123.45, 6, 1) 

------ 
123.5 

(1 row(s) affected) 
+0

Bravo! ¿Cómo extrañé esto? Tenga en cuenta que STR() toma un flotante, no un decimal. La Ayuda de SQLServer es muy explícita al respecto ("... una expresión de tipo de datos numéricos aproximados (flotantes)"): si sus decimales tienen suficientes dígitos, el redondeo le causará problemas. Esta sigue siendo una gran respuesta para la mayoría –

0

Si usted debe hacer esto en SQL puede utilizar el código folowing (Este código asume que no tiene valores numéricos que son más grandes de 40 caracteres):

SELECT REPLICATE(' ', 40 - LEN(CAST(numColumn as varchar(40)))) + 
CAST(numColumn AS varchar(40)) FROM YourTable 
2

La forma más sencilla es rellenar izquierda:

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) 
Cuestiones relacionadas