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

REAL टाइप को NUMERIC में कैसे राउंड करें?

real एक हानिपूर्ण, अचूक फ़्लोटिंग-पॉइंट प्रकार है। यह भंडारण के लिए केवल 4 बाइट्स का उपयोग करता है और प्रस्तुत संख्यात्मक अक्षर को ठीक से शुरू करने के लिए संग्रहीत नहीं कर सकता है। इसके अलावा, कार्यान्वयन विवरण आपके प्लेटफॉर्म पर निर्भर करता है। अध्याय "फ़्लोटिंग-पॉइंट प्रकार" पर विचार करें मैनुअल।

round() में कुछ भी गलत नहीं है या cast() . सटीक परिणामों के लिए, आपको numeric का उपयोग करना होगा शुरू करने के लिए।

फ़ंक्शन ऑडिट

CREATE OR REPLACE FUNCTION test3()
  RETURNS void AS
$func$
DECLARE
   r record;
BEGIN
   FOR r IN 
      SELECT abs_km AS km
            ,cast(abs_km AS numeric) AS km_cast
            ,round(abs_km::numeric, 2) AS km_round
      FROM   gps_entry
   LOOP
      RAISE NOTICE 'km: % , km_cast: % , km_round: %'
                  , r.km, r.km_cast, r.km_round;
      INSERT INTO test (km, casting, rounding)
      VALUES (r.km, r.km_cast, r.km_round);
   END LOOP;    
END
$func$ LANGUAGE plpgsql;
  • भाषा का नाम उद्धृत न करें plpgsql . यह एक पहचानकर्ता है।
  • बाद . को 2 भिन्नात्मक अंकों में गोल करने का कोई मतलब नहीं है numeric(16,2) . पर कास्टिंग , जो पहले से ही जबरन चक्कर लगाते हैं। या तो - या ..

    round(abs_km:: numeric(16,2), 2) as round
    round(abs_km::numeric, 2) as round
    abs_km::numeric(16,2) as round

अंत में, आपको वर्तमान संस्करण में अपग्रेड करने की आवश्यकता है। पोस्टग्रेज 8.3 ईओएल तक पहुंच गया है और यह समर्थित नहीं है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JSON में काफ्का विषय से PostgreSQL के लिए डेटा पुश करें

  2. संयोजन मतभेदों को पोस्टग्रेज करता है। ओएसएक्स वी उबंटू

  3. पोस्टग्रेस टेबल के लिए प्राथमिक कुंजी बीज कैसे निर्दिष्ट करें?

  4. कैसे Width_Bucket () PostgreSQL में काम करता है

  5. यदि कोई मान नहीं मिलता है तो किसी फ़ंक्शन से मान कैसे वापस करें