2008-09-11 21 views
9

हम सभी T-SQL की स्ट्रिंग परिवर्तन क्षमताओं पता कभी कभी ज्यादा होना बाकी है ...एसक्यूएल सर्वर में सही संरेखित पाठ

मैं संख्यात्मक फ़ील्ड है कि एक सही-मिलान के रूप में T-SQL में उत्पादन होने की जरूरत है है पाठ कॉलम उदाहरण:

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

आप इसके बारे में कैसे जाएंगे? एक अच्छा समाधान स्पष्ट और कॉम्पैक्ट होना चाहिए, लेकिन याद रखें कि "बहुत चालाक" जैसी चीज है।

मैं मानता हूं कि ऐसा करने के लिए यह गलत जगह है, लेकिन कभी-कभी हम अपने नियंत्रण से बाहर बलों द्वारा फंस जाते हैं।

धन्यवाद।

उत्तर

13

STR function में वैकल्पिक लंबाई तर्क के साथ-साथ कई-दशमलव-एक भी है।

SELECT STR(123.45, 6, 1) 

------ 
123.5 

(1 row(s) affected) 
+0

ब्रावो! ये मुझसे कैसे छूट गया? ध्यान दें कि एसटीआर() एक फ्लोट लेता है, दशमलव नहीं। SQLServer सहायता इसके बारे में बहुत स्पष्ट है ("... अनुमानित संख्यात्मक (फ्लोट) डेटा प्रकार की अभिव्यक्ति"): यदि आपके दशमलव में पर्याप्त अंक हैं, तो गोल करने से आपको परेशानी होगी। यह अभी भी सबसे अधिक के लिए एक अच्छा जवाब है –

0

आप एसक्यूएल में ऐसा करना आवश्यक है यदि आप folowing कोड का उपयोग कर सकते हैं (इस कोड को मान लिया गया है तो आप कोई numerics है कि बड़े से कम 40 वर्ण हैं कि):

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

सबसे आसान तरीका पैड करने के लिए है बाएं:

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) 
संबंधित मुद्दे