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"