اليمين محاذاة البيانات الرقمية في SQL Server

StackOverflow https://stackoverflow.com/questions/56950

  •  09-06-2019
  •  | 
  •  

سؤال

نحن جميعا نعرف T-SQL سلسلة التلاعب قدرات بعض الأحيان يترك الكثير مما هو مرغوب فيه...

لدي حقل رقمي يجب أن يكون الإخراج في T-SQL كما محاذاة إلى اليمين عمود نص.على سبيل المثال:

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

كيف يمكنك أن تذهب نحو ذلك ؟ حل جيد يجب أن تكون واضحة و الاتفاق, ولكن تذكر أن هناك شيء من هذا القبيل "ذكي جدا".

أنا أوافق هذا هو المكان الخاطئ للقيام بذلك ، ولكن في بعض الأحيان نحن عالقون من قبل قوى خارجة عن سيطرتنا.

شكرا لك.

هل كانت مفيدة؟

المحلول

على STR وظيفة اختياري طول حجة فضلا عن عدد من عشرية واحدة.

SELECT STR(123.45, 6, 1)

------
 123.5

(1 row(s) affected)

نصائح أخرى

أسهل طريقة هي أن لوحة اليسار:

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)

إذا كان عليك أن تفعل هذا في SQL يمكنك استخدام التالي رمز (رمز هذا يفترض أن يكون لديك أي العددية التي هي أكبر من 40 حرف):

SELECT REPLICATE(' ', 40 - LEN(CAST(numColumn as varchar(40)))) + 
CAST(numColumn AS varchar(40)) FROM YourTable
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top