2012-12-13 15 views
14

के लिए SQL Server 2008 हजारों विभाजक मेरे पास TotalArea नामक एक कॉलम है और इसका प्रारूप numeric (12,2) है।कॉलम

मैं जब मैं

select TotalArea from table 

मुझे 1,234.00 की तरह एक प्रारूप को दिखाने के लिए यह बहुत एक हजार विभाजक के साथ नंबर प्रदर्शित करना चाहते हैं।

मैं यह कैसे कर सकता हूं? धन्यवाद!

+0

संभावित डुप्लिकेट [मैं टी-एसक्यूएल में अल्पविराम के साथ एक संख्या कैसे प्रारूपित करूं?] (Https://stackoverflow.com/questions/4377352/how-do-i- प्रारूप-ए-संख्या-साथ-अल्पविराम-इन-टी-एसक्यूएल) –

उत्तर

26

इस तरह का प्रयास करें:

select replace(convert(varchar,convert(Money, TotalArea),1),'.00','') 
from table 

या

SELECT CAST(CONVERT(varchar, CAST(123456 AS Money), 1) AS varchar) 
from table 
+1

+1 beca इसका सही इस्तेमाल करें, लेकिन कृपया ऐसा न करें। @ मैटविटफील्ड ने इसे पूरी तरह से खींचा है। – tomfanning

+1

केवल यह करें यदि आपका नंबर धन के प्रकार में रहता है। @dasiimwe का बेहतर जवाब है। फ़्लोट मान – Dave

+0

फ्लोट मानों को ठीक कर देगा, और यदि आप SQL Server 2008 के साथ फंस गए हैं तो यह संभवतः सबसे अच्छा विकल्प है। '@ फ्लोट = 12345.67890 घोषित करें; चयन कन्वर्ट (वर्कर, सीएएसटी (@ एफ एएस मनी), 1) ' – Rob

18

प्रदर्शन के लिए प्रारूपण संख्या कुछ है कि प्रदर्शन परत में किया जाना चाहिए है, और डेटाबेस के भीतर नहीं। इसलिए, इस डेटा का उपयोग होने वाले किसी भी एप्लिकेशन में, आपको इसे प्रारूपित करना चाहिए। प्रबंधन स्टूडियो, दुर्भाग्यवश, इस संबंध में अधिक नियंत्रण प्रदान नहीं करता है।

+0

यदि आप मानकीकृत एक्सएमएल डेटा स्वरूपण चाहते हैं तो क्या होगा? मैं डेटाबेस में स्वरूपण मानकों का प्रबंधन करता हूं, और यह सभी ग्राहकों के लिए प्रचार करता है, चाहे वह वेब, मोबाइल इत्यादि हो। और बीटीडब्लू, फॉर्मेट (संख्या, '#, 0') आपको विभाजक देता है, यह सुनिश्चित नहीं करता कि कोई भी प्रतिस्थापित क्यों करेगा (रूपांतरित करें (कन्वर्ट())) ???? 1 एम + रिकॉर्ड करते समय मेरे विचार में कुशल नहीं है ... –

+0

@ArvinAmir - मैं तर्क दूंगा कि एक्सएमएल का स्वरूपण केवल मनुष्यों के लिए जरूरी है - कंप्यूटर इसे वही मानते हैं चाहे इसमें सफेद जगह का गुच्छा हो या नहीं। तो मैं कहूंगा कि प्रदर्शन के बिंदु पर स्वरूपण की तरह अभी भी किया जाना चाहिए। –

-1

इसे एक अद्भुत उदाहरण आज़माएं।

चयन कास्ट (CONVERT (varchar, कास्ट (123456 पैसे के रूप में), varchar के रूप में 1))

+1

लगभग पैराडो के उत्तर के समान और लगभग एक साल बाद - *** डुप्लिकेट उत्तर *** – Kiquenet

14
SELECT FORMAT(12345,'#,0.00'); 

SELECT FORMAT(TotalArea,'#,0.00') from table; 

संदर्भ: https://msdn.microsoft.com/en-us/library/ee634206(v=sql.105).aspx

+0

यह काम करता है क्योंकि यह काम करता है - चयन प्रारूप (2222222222222222222222222, '#, 0.00') – Dave

+0

केवल SQL Server 2012 से समर्थित । https://social.msdn.microsoft.com/Forums/sqlserver/en-US/b4090663-6805-46f5-b84f-81e5eb90da30/format-works-in-2012-but-not-in-2008-what-am- i-missing? forum = transactsql –

+0

धन्यवाद, बहुत उपयोगी है –

0

उपयोग इस सरल .... प्रारूप (CHART_OF_ITEM। UNIT_PRIC_W_TAX, '#, 0.00') UNIT_PRICE_W_TAX