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

TO_CHAR(संख्या) Oracle में कार्य

Oracle डाटाबेस में, TO_CHAR(number) फ़ंक्शन किसी संख्या को VARCHAR2 . में कनवर्ट करता है प्रारूप तर्क द्वारा निर्दिष्ट प्रारूप में मान।

सिंटैक्स

वाक्य रचना इस प्रकार है:

TO_CHAR(n [, fmt [, 'nlsparam' ] ])

कहां:

  • n NUMBER . प्रकार का हो सकता है , BINARY_FLOAT , या BINARY_DOUBLE
  • fmt एक वैकल्पिक प्रारूप मॉडल है जो निर्दिष्ट करता है कि परिणाम को कैसे स्वरूपित किया जाना चाहिए। मान्य संख्या प्रारूप तत्व देखें जिनका उपयोग आपके प्रारूप मॉडल के निर्माण के लिए किया जा सकता है।
  • 'nlsparam' एक वैकल्पिक तर्क है जो निर्दिष्ट करता है कि विभिन्न वर्ण कैसे लौटाए जाते हैं। आप इसका उपयोग दशमलव वर्ण और समूह विभाजक, स्थानीय मुद्रा प्रतीक और अंतर्राष्ट्रीय मुद्रा प्रतीक निर्दिष्ट करने के लिए कर सकते हैं। यदि इस तर्क को छोड़ दिया जाता है, तो वर्तमान सत्र के लिए डिफ़ॉल्ट मानों का उपयोग किया जाता है।

उदाहरण

फ़ंक्शन कैसे काम करता है, यह दिखाने के लिए यहां एक उदाहरण दिया गया है:

SELECT TO_CHAR(12345, '99G999') AS Result
FROM DUAL;

परिणाम:

    RESULT 
__________ 
 12,345   

पहला तर्क वास्तविक संख्या है जिसे हम स्वरूपित कर रहे हैं, और दूसरा तर्क प्रारूप मॉडल है। प्रारूप मॉडल निर्दिष्ट करता है कि संख्या कैसे स्वरूपित की जाती है।

इस मामले में, हमारा प्रारूप मॉडल उपयुक्त स्थिति में समूह विभाजक के साथ संख्या को प्रारूपित करता है। प्रत्येक संख्यात्मक अंक 9 . द्वारा दर्शाया जाता है , और समूह विभाजक को G . द्वारा दर्शाया जाता है ।

अगर हम प्रारूप मॉडल को थोड़ा बदल देते हैं तो यहां क्या होता है:

SELECT TO_CHAR(12345, '099G999') AS Result
FROM DUAL;

परिणाम:

     RESULT 
___________ 
 012,345    

इस मामले में, हमने प्रारूप मॉडल को 0 . के साथ प्रारंभ किया चरित्र। यह जहां भी लागू हो एक अग्रणी शून्य देता है। 9 वर्ण अग्रणी शून्य नहीं लौटाता है।

वास्तव में, हम सभी 9 . को बदल सकते हैं s 0 . के साथ एस अगर हम चाहते हैं। यहां एक तुलना है जो दिखाती है कि आप किस प्रारूप तत्व का उपयोग करते हैं, इसके आधार पर परिणाम काफी भिन्न हो सकते हैं:

SELECT 
    TO_CHAR(12, '000G000') AS "000G000",
    TO_CHAR(12, '999G999') AS "999G999"
FROM DUAL;

परिणाम:

    000G000     999G999 
___________ ___________ 
 000,012          12    

मुद्रा चिह्न

आप L . का उपयोग कर सकते हैं स्वरूप तत्व स्थानीय मुद्रा प्रतीक वापस करने के लिए।

उदाहरण:

SELECT TO_CHAR(12345, 'L99G999D99') AS Result
FROM DUAL;

परिणाम:

                 RESULT 
_______________________ 
          $12,345.00   

यह उदाहरण एक प्रारूप मॉडल का उपयोग करता है जो स्थानीय मुद्रा प्रतीक (L द्वारा दर्शाया गया) का उपयोग करके परिणाम को आउटपुट करता है ), एक समूह विभाजक (G . द्वारा प्रदर्शित) ), एक दशमलव वर्ण (D . द्वारा दर्शाया गया है) ), और निश्चित रूप से, प्रत्येक संख्यात्मक अंक (9 . द्वारा दर्शाया गया है) )।

स्थानीय मुद्रा प्रतीक NLS_CURRENCY . के वर्तमान मूल्य द्वारा निर्धारित किया जाता है पैरामीटर। यह सच है कि हम डॉलर चिह्न ($ .) का उपयोग कर सकते थे ) मुद्रा प्रतीक के लिए, लेकिन यह मानता है कि मुद्रा डॉलर में मूल्यवर्गित है। दुनिया भर में कई अन्य संभावित मुद्राएं हैं, और L प्रारूप तत्व उपयोगकर्ता के सत्र के लिए स्थानीय मुद्रा प्रतीक को गतिशील रूप से वापस करने में सक्षम है।

देखें कि अगर आपको एनएलएस पैरामीटर्स के मूल्यों की जांच करने की ज़रूरत है तो उन्हें कैसे जांचें।

इस फ़ंक्शन के साथ संख्याओं को प्रारूपित करने के लिए उपयोग किए जा सकने वाले प्रारूप तत्वों की सूची के लिए Oracle में संख्या प्रारूप तत्वों की यह पूरी सूची देखें।

डिफ़ॉल्ट प्रारूप

अगर आप fmt . को छोड़ देते हैं तर्क, संख्या को VARCHAR2 . में बदल दिया जाता है अपने महत्वपूर्ण अंकों को धारण करने के लिए पर्याप्त लंबा मान।

प्रारूप निर्दिष्ट किए बिना किसी संख्या को परिवर्तित करने का एक उदाहरण यहां दिया गया है:

SELECT TO_CHAR(525.45)
FROM DUAL;

परिणाम:

525.45

'nlsparam' तर्क

'nlsparam' तर्क का उपयोग दशमलव वर्ण और समूह विभाजक, स्थानीय मुद्रा प्रतीक और अंतर्राष्ट्रीय मुद्रा प्रतीक निर्दिष्ट करने के लिए किया जा सकता है।

यह निम्नलिखित रूप लेता है:

'NLS_NUMERIC_CHARACTERS = ''dg''
   NLS_CURRENCY = ''text''
   NLS_ISO_CURRENCY = territory '

उदाहरण:

SELECT 
    TO_CHAR(
        1234.56, 
        'L99G999D99',
        'NLS_NUMERIC_CHARACTERS = '',.''
        NLS_CURRENCY = ''€''
        NLS_ISO_CURRENCY = Germany'
    )
FROM DUAL;

परिणाम:

         €1.234,56

यहाँ यह फिर से है, लेकिन इस बार मैं L . को बदल रहा हूँ C . के साथ प्रारूप मॉडल में:

SELECT 
    TO_CHAR(
        1234.56, 
        'C99G999D99',
        'NLS_NUMERIC_CHARACTERS = '',.''
        NLS_CURRENCY = ''€''
        NLS_ISO_CURRENCY = Germany'
    )
FROM DUAL;

परिणाम:

      EUR1.234,56

C ISO मुद्रा प्रतीक लौटाता है, जो इस मामले में EUR . है ।

पैडिंग को कैसे रोकें

आपने देखा होगा कि कुछ उदाहरणों में परिणामों के बाईं ओर पैडिंग लागू होती है। इस तरह के पैडिंग को fm . से हटाया जा सकता है प्रारूप संशोधक।

उदाहरण:

SELECT 
    TO_CHAR(
        1234.56, 
        'fmL99G999D99',
        'NLS_NUMERIC_CHARACTERS = '',.''
        NLS_CURRENCY = ''€''
        NLS_ISO_CURRENCY = Germany'
    )
FROM DUAL;

परिणाम:

€1.234,56

अशक्त तर्क

पासिंग null परिणाम null :

SET NULL 'null';
SELECT TO_CHAR(null)
FROM DUAL;

परिणाम:

null

डिफ़ॉल्ट रूप से, SQLcl और SQL*Plus जब भी null . खाली स्थान लौटाते हैं SQL SELECT . के परिणामस्वरूप होता है बयान।

हालांकि, आप SET NULL . का उपयोग कर सकते हैं वापस करने के लिए एक अलग स्ट्रिंग निर्दिष्ट करने के लिए। यहाँ मैंने निर्दिष्ट किया है कि स्ट्रिंग null लौटाया जाना चाहिए।

अनुपलब्ध तर्क

बिना किसी तर्क के फ़ंक्शन को कॉल करने से त्रुटि होती है:

SELECT TO_CHAR()
FROM DUAL;

परिणाम:

SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"

बहुत अधिक तर्क पारित करने से भी त्रुटि होती है:

SELECT TO_CHAR(123, '99', 'NLS_ISO_CURRENCY = GERMANY', 'oops!' )
FROM DUAL;

परिणाम:

SQL Error: ORA-00939: too many arguments for function
00939. 00000 -  "too many arguments for function"

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. हैश जॉइन और मर्ज जॉइन (Oracle RDBMS) में क्या अंतर है?

  2. ओरेकल तेज पेजिंग क्वेरी

  3. कैसे जांचें कि फ़ाइल पीएल/एसक्यूएल का उपयोग कर छवि है या नहीं?

  4. Oracle डेटाबेस में उपयोगकर्ता परिभाषित रिकॉर्ड डेटाटाइप वैरिएबल कैसे बनाएं?

  5. Oracle डाटाबेस में PL/SQL सबरूटीन्स के लिए कॉलिंग नोटेशन