2008-09-11 31 views
9

Chúng ta đều biết khả năng thao tác chuỗi T-SQL đôi khi để lại nhiều điều ...Căn chỉnh văn bản ngay trong SQL Server

Tôi có trường số cần được xuất trong T-SQL làm căn phải cột văn bản. Ví dụ:

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

Bạn sẽ làm như thế nào? Một giải pháp tốt phải rõ ràng và nhỏ gọn, nhưng hãy nhớ rằng có một thứ như "quá thông minh".

Tôi đồng ý đây là nơi sai để thực hiện việc này, nhưng đôi khi chúng tôi bị kẹt bởi các lực lượng ngoài tầm kiểm soát của chúng tôi.

Cảm ơn bạn.

Trả lời

13

STR function có đối số độ dài tùy chọn cũng như số thập phân một số thập phân.

SELECT STR(123.45, 6, 1) 

------ 
123.5 

(1 row(s) affected) 
+0

Bravo! Làm thế nào tôi đã bỏ lỡ điều này? Lưu ý rằng STR() lấy một phao, không phải là số thập phân. SQLServer Help là rất rõ ràng về nó ("... một biểu thức của số gần đúng (float) kiểu dữ liệu"): nếu số thập phân của bạn có đủ chữ số, làm tròn sẽ gây rắc rối cho bạn. Đây vẫn là câu trả lời hay cho hầu hết mọi người –

0

Nếu bạn PHẢI làm điều này trong SQL bạn có thể sử dụng mã folowing (mã này giả định rằng bạn không có numerics được lớn hơn 40 ký tự):

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

Cách đơn giản nhất là để pad bên trái:

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) 
Các vấn đề liên quan