किसी भी इच्छित चौड़ाई के लिए बाएं-गद्दी के लिए एक अधिक सामान्य तकनीक यहां दी गई है:
declare @x int = 123 -- value to be padded
declare @width int = 25 -- desired width
declare @pad char(1) = '0' -- pad character
select right_justified = replicate(
@pad ,
@width-len(convert(varchar(100),@x))
)
+ convert(varchar(100),@x)
हालाँकि, यदि आप नकारात्मक मूल्यों के साथ काम कर रहे हैं, और अग्रणी शून्य के साथ पैडिंग कर रहे हैं, तो न तो यह, और न ही अन्य सुझाई गई तकनीक काम करेगी। आपको कुछ ऐसा मिलेगा जो इस तरह दिखता है:
00-123
[संभवत: वह नहीं जो आप चाहते थे]
तो ... आपको कुछ अतिरिक्त हुप्स के माध्यम से कूदना होगा यहां एक दृष्टिकोण है जो नकारात्मक संख्याओं को ठीक से प्रारूपित करेगा:
declare @x float = -1.234
declare @width int = 20
declare @pad char(1) = '0'
select right_justified = stuff(
convert(varchar(99),@x) , -- source string (converted from numeric value)
case when @x < 0 then 2 else 1 end , -- insert position
0 , -- count of characters to remove from source string
replicate(@pad,@width-len(convert(varchar(99),@x)) ) -- text to be inserted
)
एक को ध्यान देना चाहिए कि convert()
कॉल को [n]varchar
परिवर्तित होने के लिए पर्याप्त लंबाई निर्दिष्ट करनी चाहिए ताकि ट्रंकेशन के साथ परिवर्तित परिणाम प्राप्त हो सके।