PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL - फ्लोटिंग पॉइंट नंबरों को गोल करना

कोशिश करें

SELECT round((1/3.)::numeric,4);

PostgreSQL के किसी भी संस्करण के साथ काम करता है।

कुछ PostgreSQL फ़ंक्शंस में ओवरलोड की कमी है, क्यों (???):मुझे लगता है कि "यह एक कमी है", और नीचे मेरा वर्कअराउंड दिखाएं, लेकिन देखें अधिक स्पष्टीकरण के लिए यह चर्चा

कास्टिंग रणनीति के रूप में ओवरलोडिंग

आप ओवरलोड कर सकते हैं के साथ राउंड फ़ंक्शन,

 CREATE FUNCTION ROUND(float,int) RETURNS NUMERIC AS $$
    SELECT ROUND($1::numeric,$2);
 $$ language SQL IMMUTABLE;

अब आपका निर्देश ठीक काम करेगा, कोशिश करें (फ़ंक्शन निर्माण के बाद)

 SELECT round(1/3.,4); -- 0.3333 numeric

लेकिन यह एक प्रकार का NUMERIC देता है... पहले कमॉम-उपयोग अधिभार को संरक्षित करने के लिए, जब कोई टेक्स्ट पैरामीटर पेश किया जाता है तो हम एक फ्लोट वापस कर सकते हैं,

 CREATE FUNCTION ROUND(float, text, int DEFAULT 0) 
 RETURNS FLOAT AS $$
    SELECT CASE WHEN $2='dec'
                THEN ROUND($1::numeric,$3)::float
                -- ... WHEN $2='hex' THEN ... WHEN $2='bin' THEN... 
                ELSE 'NaN'::float  -- is like a error message 
            END;
 $$ language SQL IMMUTABLE;

कोशिश करें

 SELECT round(1/3.,'dec',4);   -- 0.3333 float!
 SELECT round(2.8+1/3.,'dec',1); -- 3.1 float!
 SELECT round(2.8+1/3.,'dec'::text); -- need to cast string? pg bug 

पुनश्च:आप \df,

. द्वारा ओवरलोडिंग की जांच कर सकते हैं
 \df round
  Schema    | Name  | Datatype of result        |    Datatype of parameters                       
 -----------+-------+---------------------------+--------------------------------
 myschema   | round | numeric                   | double precision, integer                                     
 myschema   | round | double precision          | double precision, text, integer
 pg_catalog | round | double precision          | double precision                                              
 pg_catalog | round | numeric                   | numeric                                                       
 pg_catalog | round | numeric                   | numeric, integer                                              

pg_catalog फ़ंक्शन डिफ़ॉल्ट हैं, बिल्ड-इन गणित का मैनुअल देखें कार्य



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सुनो/सूचित करें pgconnection जावा नीचे चला जाता है?

  2. माइक्रोनॉट yml . में डीबी से कनेक्ट नहीं हो रहा है

  3. पोस्टग्रेज में तालिका के लिए क्वेरी अनुदान

  4. Power BI सेवा - एक पोस्टग्रेस्क्ल स्रोत को रीफ्रेश करने में असमर्थ जो एन्क्रिप्टेड कनेक्शन का समर्थन नहीं करता है

  5. ऐसे सदस्य खोजें जिन्होंने पुरानी सदस्यता की सीमा के भीतर पुन:सदस्यता नहीं ली