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

ओरेकल में अग्रणी शून्य के साथ मान प्रदर्शित नहीं हो रहे हैं

आप 'FM999999990D9999' . जैसे मास्क से नज़दीक आ सकते हैं , आपके पास मौजूद सभी मानों को कवर करने के लिए दशमलव के प्रत्येक पक्ष में 9 की उचित संख्या के साथ।

with tab1 (cola) as (
         select 0.87 from dual
  union  select 661 from dual
  union  select 661.87 res from dual
  union  select 1.5 res from dual
)
select cola, to_char(cola, 'FM999999990D9999')
from tab1;

      COLA TO_CHAR(COLA,'F
---------- ---------------
       .87 0.87           
       1.5 1.5            
       661 661.           
    661.87 661.87         

FM पिछला शून्य और अग्रणी रिक्त स्थान हटा देता है (+/- चिह्न के लिए नाममात्र स्थान सहित)।

अनुगामी दशमलव मार्कर से छुटकारा पाने के लिए भी आपको इसे ट्रिम करना होगा:

with tab1 (cola) as (
         select 0.87 from dual
  union  select 661 from dual
  union  select 661.87 res from dual
  union  select 1.5 res from dual
)
select cola, rtrim(to_char(cola, 'FM999999990D9999'), to_char(0, 'FMD'))
from tab1;

मैं D . के साथ फंस गया हूं उसके दोनों हिस्सों में; आप एक निश्चित . . का उपयोग कर सकते हैं दोनों में इसलिए आपको दूसरे to_char() . की आवश्यकता नहीं है उसे बदलने के लिए कॉल करें, लेकिन हो सकता है कि आप इसे सत्र द्वारा नियंत्रित करना चाहें - किसी भी तरह से इसे सुसंगत होने की आवश्यकता है।

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

with tab1 (cola) as (
            select 0.87 from dual
  union all select 661 from dual
  union all select 661.87 res from dual
  union all select 1.5 res from dual
  union all select 0.00045354543 from dual
)
select cola,
  'FM' || lpad('0', length(trunc(cola)), '9')
       || case when trunc(cola) != cola
               then 'D' || rpad('9', length(cola - trunc(cola)) - 1, '9')
          end as format_mask,
  to_char(cola,
    'FM' || lpad('0', length(trunc(cola)), '9')
         || case when trunc(cola) != cola
                 then 'D' || rpad('9', length(cola - trunc(cola)) - 1, '9')
            end) as result
from tab1;

           COLA FORMAT_MASK          RESULT              
--------------- -------------------- --------------------
            .87 FM0D99               0.87                
            661 FM990                661                 
         661.87 FM990D99             661.87              
            1.5 FM0D9                1.5                 
   .00045354543 FM0D99999999999      0.00045354543       

यह निहित रूपांतरण पर निर्भर करता है लेकिन सकारात्मक, नकारात्मक और शून्य के लिए काम करता प्रतीत होता है। इसे परिणाम को ट्रिम करने की आवश्यकता नहीं है क्योंकि दशमलव विभाजक डी केवल गैर-पूर्णांक के लिए ही शामिल है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या डेटाबेस में सर्कुलर संदर्भ स्वीकार्य हैं?

  2. ORA-12705:NLS डेटा फ़ाइलों या अमान्य वातावरण तक नहीं पहुँच सकता

  3. आईएन ऑपरेटर को गतिशील रूप से मूल्य कैसे पास करें?

  4. अमेज़ॅन आरडीएस ओरेकल इंस्टेंस से कनेक्ट करते समय रीड कॉल त्रुटि से गॉट माइनस वन से कैसे संपर्क करें

  5. टाइमज़ोन के साथ हाइबरनेट टाइमस्टैम्प