दो दशमलव स्थानों SQL सर्वर के साथ एक संख्या लिखें


जवाबों:


213

इसे इस्तेमाल करे

SELECT CONVERT(DECIMAL(10,2),YOURCOLUMN)

2
अगर यह 10 साल पहले का उत्तर था तो यह कोई और नहीं है। यह विधि 10.11111 से 10.00 में बदल जाएगी।
जोनाथन काउले-थॉम

मैंने SELECT CONVERT (DECIMAL (10,2), 10.11111) की कोशिश की, यह SELECT CONVERT (DECIMAL (10,2), '10.11111') के लिए 10.11 परिणाम लौटा। यह Sql सर्वर 2008 R2 में था
SKCS कमल

70

Str()फ़ंक्शन का उपयोग करें । यह तीन तर्क (संख्या, प्रदर्शित करने के लिए कुल वर्ण, और प्रदर्शित करने के लिए दशमलव स्थानों की संख्या लेता है

  Select Str(12345.6789, 12, 3)

प्रदर्शित करता है: '12345.679' (3 रिक्त स्थान, 5 अंक 12345, एक दशमलव बिंदु, और तीन दशमलव अंक (679)। - यह चक्कर काटता है अगर इसे छोटा करना है, (जब तक कि पूर्णांक आकार कुल के लिए बहुत बड़ा नहीं होता) इसके बजाय तारांकन प्रदर्शित किए जाते हैं।)

दशमलव बिंदु के दाईं ओर कुल 12 वर्णों के लिए।


1
it rounds if it has to truncate... जब तक पूर्णांक का हिस्सा कुल आकार के लिए बहुत बड़ा नहीं होता, तब तक इसके बजाय तारांकन प्रदर्शित किए जाते हैं। इसके लिए प्रलेखनSTR में उल्लेख किया गया है । यहाँ उस पृष्ठ से एक उद्धरण है:STR(1223,2) truncates the result set to **.
मार्क बायर्स

36

आम तौर पर आप मापदंडों के साथ इसे परिभाषित करके SQL में एक संख्या की शुद्धता को परिभाषित कर सकते हैं। अधिकांश मामलों के लिए यह होगा NUMERIC(10,2)या Decimal(10,2)- 2 (दशमलव स्थानों) की परिशुद्धता के साथ 10 कुल अंकों के साथ एक संख्या के रूप में एक स्तंभ को परिभाषित करेगा।

स्पष्टता के लिए संपादित


4
इसे DECIMAL (10, 2) के रूप में भी घोषित किया जा सकता है।
jrcs3

10
यह कई कारणों से गलत है। यह संख्या नहीं है, यह संख्यात्मक या दशमलव है। आप कहते हैं कि संख्यात्मक (10,2) दशमलव बिंदु से पहले 10 स्थानों की अनुमति देता है, जो गलत भी है। संख्यात्मक (10,2) दशमलव बिंदु के बाद 2 स्थानों के साथ 10 कुल अंकों की अनुमति देता है। रेंज = -99999999.99 से 99999999.99
जॉर्ज मैस्ट्रोस

@G Mastros: ऐसा लगता है कि आप सटीक बिंदु पर सही हैं। अधिवेशन के वास्तविक नामकरण में, SQL कार्यान्वयन के कई में NUMBER एक मान्य प्रकार है। हालांकि मैं sqlserver के मामले को नहीं जानने के लिए स्वीकार करूंगा
AAA

@Gastros एक ही बात कहने आया था। msdn.microsoft.com/en-us/library/aa258832%28v=sql.80%29.aspx
जो

19

यह मेरे लिए काम करता है और हमेशा दो अंकों का अंश रखता है

23.1 ==> 23.10

25.569 ==> 25.56

1 ==> 1.00

Cast(CONVERT(DECIMAL(10,2),Value1) as nvarchar) AS Value2

कोड स्क्रीनशॉट


2
ऊपर दिए गए चार्ल्स ब्रेटाना के एसटीआर () फ़ंक्शन को आज़माएं। यह आपके फॉर्मूले की तरह काम करता है लेकिन आपके 25.569 उदाहरण पर राउंडिंग करेगा।
जेरीओल

15

यह आज के बच्चे कैसे कर रहे हैं:

DECLARE @test DECIMAL(18,6) = 123.456789
SELECT FORMAT(@test, '##.##')

123.46


1
FORMAT फ़ंक्शन 2012 संस्करण के बाद से उपलब्ध है।
user1263981

या: Select FORMAT (@test, '। ##')
java-love

यदि इनपुट डेटा था: DECLARE @test DECIMAL(18,6) = 0.456789 तो SELECT FORMAT(@test, '##.##')रिटर्न: .46 आप इसे अग्रणी शून्य दिखाने के लिए कैसे प्राप्त करें 0.46:?
लसदेव महादेव

एक अग्रणी 0 पाने के लिए, SELECT FORMAT (@test, '# 0 #। ##')
आज़माएं

14

यदि आपको केवल दो दशमलव स्थानों की आवश्यकता है, तो सबसे सरल तरीका है ।।

SELECT CAST(12 AS DECIMAL(16,2))

या

SELECT CAST('12' AS DECIMAL(16,2))

उत्पादन

12.00

7

यदि आप इसे रौंदने के बजाय संख्या को गोल करने के साथ ठीक हैं , तो यह सिर्फ है:

ROUND(column_name,decimals)

2

इसे इस्तेमाल करे:

 declare @MyFloatVal float;

    set @MyFloatVal=(select convert(decimal(10, 2), 10.254000))

    select  @MyFloatVal

    Convert(decimal(18,2),r.AdditionAmount) as AdditionAmount

0

उस मान को गुणा करें जिसे आप सम्मिलित करना चाहते हैं (उदा। 2.99) 100 से

फिर परिणाम को 100 तक जोड़कर ।01 को अंत तक जोड़ें:

299.01/100

0

यह दशमलव के बाद 2 मानों के साथ कुल 10 अंकों की अनुमति देगा। इसका अर्थ है कि यह दशमलव के 8 अंक और 2 के बाद दशमलव से पहले मान को समायोजित कर सकता है।

मान्य करने के लिए, निम्नलिखित क्वेरी में मान डालें।

DECLARE vtest  number(10,2);
BEGIN
SELECT 10.008 INTO vtest FROM dual;
dbms_output.put_line(vtest);
END;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.