Oracle डेटाबेस में, आप संख्याओं को कई तरह से फ़ॉर्मेट कर सकते हैं।
उदाहरण के लिए, आप सही जगह पर अल्पविराम और दशमलव बिंदुओं के साथ किसी संख्या को मुद्रा के रूप में प्रारूपित कर सकते हैं। आप अग्रणी शून्य निर्दिष्ट कर सकते हैं, आप एक भिन्नात्मक भाग जोड़ सकते हैं - या यदि आवश्यक हो तो इसे हटा सकते हैं।
इस लेख में निम्नलिखित के उदाहरण हैं:
- नंबरों को मुद्रा के रूप में प्रारूपित करें
- अल्पविराम/हजारों विभाजक जोड़ें
- दशमलव स्थान शामिल करें
- दशमलव के सभी स्थान हटाएं
- अग्रणी शून्य को किसी संख्या में जोड़ें
मैं यह भी बताता हूं कि आपके सत्र के एनएलएस पैरामीटर से फ़ॉर्मेटिंग कैसे प्रभावित होती है।
एनएलएस इनिशियलाइज़ेशन पैरामीटर यह निर्धारित करते हैं कि वर्तमान सत्र में समूह विभाजक, दशमलव वर्ण और मुद्रा प्रतीक के लिए कौन से वर्णों का उपयोग किया जाता है। लोकेल जागरूक स्वरूपण को आउटपुट करने के लिए आप इन मापदंडों का लाभ उठा सकते हैं।
आप TO_CHAR(number)
. जैसे कार्यों का उपयोग कर सकते हैं और यहां तक कि LPAD()
संख्याओं को एक स्ट्रिंग में बदलने और उन्हें ठीक उसी तरह प्रारूपित करने के लिए जैसे आप मक्खी पर पसंद करते हैं। CAST()
. जैसे फंक्शन यह इस बात पर भी प्रभाव डाल सकता है कि किसी संख्या को कैसे स्वरूपित किया जाता है, यह उस डेटा प्रकार पर निर्भर करता है जिसके रूप में इसे डाला जा रहा है।
एक त्वरित उदाहरण
TO_CHAR()
. का उपयोग करके किसी संख्या को स्वरूपित करने का एक त्वरित उदाहरण यहां दिया गया है समारोह:
SELECT
TO_CHAR(12345, 'fmL99G999D00')
FROM DUAL;
परिणाम:
$12,345.00
fmL99G999D00
भाग एक प्रारूप मॉडल है जो यह निर्धारित करता है कि आउटपुट को कैसे स्वरूपित किया जाना है। आप अपनी आवश्यकताओं के अनुरूप प्रारूप मॉडल को बदल सकते हैं।
प्रारूप मॉडल में प्रत्येक वर्ण एक प्रारूप तत्व है, और इसका एक विशेष अर्थ है। आप आवश्यकतानुसार प्रारूप तत्वों को जोड़ या हटा सकते हैं।
यहां प्रारूप तत्वों की पूरी सूची दी गई है जिनका उपयोग आप संख्याओं को स्वरूपित करते समय अपने प्रारूप मॉडल के लिए कर सकते हैं।
हालांकि यह सच है कि आप विभिन्न प्रारूप तत्वों के लिए एक स्ट्रिंग शाब्दिक प्रदान कर सकते हैं (उदाहरण के लिए, एक डॉलर चिह्न ($
) ) डॉलर के लिए), यह मानता है कि मुद्रा उस हार्डकोडेड मूल्य में अंकित है। दुनिया भर में कई अन्य संभावित मुद्राएं हैं, और प्रारूप तत्व उपयोगकर्ता के सत्र के लिए स्थानीय मुद्रा प्रतीक को गतिशील रूप से वापस करने में सक्षम हैं।
यह समूह विभाजक और दशमलव वर्ण के लिए समान है। विभिन्न स्थान विभिन्न सम्मेलनों का उपयोग करते हैं। इन लोकेल जागरूक स्वरूप तत्वों का उपयोग करने से आपका कोड अधिक पोर्टेबल हो जाता है।
साथ ही, TO_CHAR()
फ़ंक्शन आपको फ़ंक्शन के भीतर अपने स्वयं के एनएलएस पैरामीटर में पास करने की अनुमति देता है। ऐसा करने से केवल उस फ़ंक्शन कॉल को प्रभावित किया जाता है, इसलिए आप अपने प्रारूप मॉडल में हार्डकोड किए बिना या अपने सत्र के लिए एनएलएस पैरामीटर अपडेट किए बिना फ्लाई पर मुद्रा प्रतीकों जैसी चीजों को बदल सकते हैं।
निम्नलिखित उदाहरण दिखाते हैं कि प्रत्येक प्रारूप तत्व अधिक विस्तार से कैसे काम करता है।
नंबरों को मुद्रा के रूप में प्रारूपित करें
किसी संख्या को मुद्रा के रूप में स्वरूपित करने का एक उदाहरण यहां दिया गया है:
SELECT
TO_CHAR(12, 'fmL99')
FROM DUAL;
परिणाम:
$12
इस मामले में, मैंने L
. का इस्तेमाल किया स्वरूप तत्व स्थानीय मुद्रा प्रतीक निर्दिष्ट करने के लिए। स्थानीय मुद्रा प्रतीक NLS_CURRENCY
. द्वारा निर्धारित किया जाता है पैरामीटर।
आप वैकल्पिक रूप से C
. का उपयोग कर सकते हैं या U
प्रारूप तत्व, जो क्रमशः आईएसओ मुद्रा प्रतीक और दोहरी मुद्रा प्रतीक लौटाते हैं।
अधिक जानकारी और उदाहरणों के लिए Oracle में संख्याओं को मुद्रा के रूप में प्रारूपित करने का तरीका देखें।
अल्पविराम/हजारों विभाजक जोड़ें
जबकि आप हमेशा अपने हजारों/समूह विभाजक के लिए हार्डकोडेड कॉमा का उपयोग कर सकते हैं, यह उन देशों को ध्यान में नहीं रखता है जो अपने समूह विभाजक के लिए अवधि का उपयोग करते हैं। उलटा स्पष्ट रूप से सच है। साथ ही, कुछ देश हज़ारों समूहों को एक पतली जगह से अलग करते हैं।
आप G
. का उपयोग कर सकते हैं समूह विभाजक निर्दिष्ट करने के लिए प्रारूप तत्व। यह गतिशील रूप से लागू समूह विभाजक को NLS_NUMERIC_CHARACTERS
में निर्दिष्ट अनुसार लौटाता है पैरामीटर। यह पैरामीटर समूह विभाजक और दशमलव वर्ण दोनों को निर्धारित करता है।
उदाहरण:
SELECT
TO_CHAR(12345, 'fm99G999')
FROM DUAL;
परिणाम:
12,345
बड़ी संख्या वाला एक और उदाहरण यहां दिया गया है:
SELECT
TO_CHAR(123456789, 'fm999G999G999')
FROM DUAL;
परिणाम:
123,456,789
अधिक विस्तृत चर्चा के लिए Oracle में अल्पविराम से किसी संख्या को कैसे प्रारूपित करें देखें।
दशमलव स्थान शामिल करें
हालांकि यह सच है कि आप अपने स्वयं के मूलांक वर्ण (उदाहरण के लिए, एक अवधि) को अपने प्रारूप मॉडल में हार्डकोड कर सकते हैं, यह अन्य स्थानों के लिए एक अलग वर्ण का उपयोग नहीं करेगा।
आप D
. का उपयोग कर सकते हैं NLS_NUMERIC_CHARACTERS
में निर्दिष्ट दशमलव/मूलांक वर्ण को वापस करने के लिए स्वरूप तत्व वर्तमान सत्र के लिए पैरामीटर:
SELECT
TO_CHAR(7, 'fm9D00')
FROM DUAL;
परिणाम:
7.00
इस मामले में मैंने दो 0
. का इस्तेमाल किया मूलांक वर्ण के बाद तत्वों को प्रारूपित करें। यह प्रारूप तत्व जहां लागू हो, अनुगामी शून्य लौटाता है।
9
. का उपयोग करना इस मामले में किसी भी अनुगामी शून्य को दबा देगा:
SELECT
TO_CHAR(7, 'fm9D99')
FROM DUAL;
परिणाम:
7.
हालांकि, अगर हम fm
. को हटा देते हैं प्रारूप संशोधक, हमें एक अलग परिणाम मिलता है:
SELECT
TO_CHAR(7, '9D99')
FROM DUAL;
परिणाम:
7.00
fm
प्रारूप संशोधक परिणाम पर लागू की गई किसी भी पैडिंग को दबा देता है। इसे हटाने से हमारा रिजल्ट गद्देदार हो जाता है। इसमें एक अग्रणी स्थान होता है, क्योंकि यह वह जगह है जहाँ एक ऋणात्मक चिन्ह चला जाता यदि संख्या ऋणात्मक होती। और इसमें अनुगामी शून्य भी शामिल हैं, क्योंकि हमने दो 9
. निर्दिष्ट किए हैं तत्वों को प्रारूपित करें।
दशमलव स्थानों के साथ संख्याओं को प्रारूपित करने के तरीके के बारे में अधिक विचारों के लिए Oracle में संख्या को 2 दशमलव स्थानों में प्रारूपित करने के 3 तरीके देखें।
सभी दशमलव स्थान हटाएं
दशमलव स्थानों के बिना किसी संख्या को प्रारूपित करने के कई तरीके हैं। एक स्पष्ट तरीका यह है कि हमारे प्रारूप स्ट्रिंग से केवल दशमलव भाग को हटा दें:
SELECT
TO_CHAR(7, 'fm9')
FROM DUAL;
परिणाम:
7
लेकिन हम अन्य कार्यों का भी उपयोग कर सकते हैं, जैसे ROUND()
, TRUNC()
, और CAST()
समान या समान प्रभाव प्राप्त करने के लिए।
उदाहरण के लिए Oracle में दशमलव के बिना किसी संख्या को प्रारूपित करने के 4 तरीके देखें।
अग्रणी शून्य जोड़ें
जब हमारी संख्या में अग्रणी शून्य जोड़ने की बात आती है तो हमारे पास कुछ विकल्प होते हैं।
फिर से, TO_CHAR()
. के साथ चिपके रहना फ़ंक्शन, हम 0
. का उपयोग कर सकते हैं प्रमुख और अनुगामी शून्य वापस करने के लिए स्वरूप तत्व।
SELECT
TO_CHAR(7, 'fm000')
FROM DUAL;
परिणाम:
007
अगर हमने 9
. का इस्तेमाल किया होता स्वरूप तत्व, हमें कोई अग्रणी शून्य नहीं मिलेगा:
SELECT
TO_CHAR(7, 'fm999')
FROM DUAL;
परिणाम:
7
हालांकि, अगर हम fm
. को हटा देते हैं प्रारूप संशोधक, हमें एक ऐसा स्थान मिलेगा जहाँ कोई भी अग्रणी शून्य होता:
SELECT
TO_CHAR(7, '999')
FROM DUAL;
परिणाम:
7
अग्रणी शून्य वाली किसी संख्या को प्रारूपित करने का दूसरा तरीका LPAD()
. है समारोह। यह फ़ंक्शन बाएं पैडिंग को स्ट्रिंग या संख्या पर लागू करता है। आप निर्दिष्ट कर सकते हैं कि पैडिंग के लिए किस वर्ण का उपयोग करना है, और इसलिए यदि आप शून्य का उपयोग करते हैं, तो यह शून्य के साथ गद्देदार हो जाएगा।
उदाहरण के लिए Oracle में अग्रणी शून्य के साथ किसी संख्या को प्रारूपित करने के 2 तरीके देखें।
NLS पैरामीटर्स की जांच कैसे करें
एनएलएस (राष्ट्रीय भाषा समर्थन) पैरामीटर क्लाइंट और सर्वर दोनों पर स्थानीय-विशिष्ट व्यवहार निर्धारित करते हैं। इसमें ऐसे पैरामीटर शामिल हैं जो यह निर्धारित करते हैं कि समूह विभाजक, दशमलव वर्ण, मुद्रा प्रतीकों आदि के लिए कौन से वर्णों का उपयोग करना है।
आइए मेरे एनएलएस मापदंडों के वर्तमान मूल्य की जांच करें:
SELECT
PARAMETER,
VALUE
FROM V$NLS_PARAMETERS;
परिणाम:
PARAMETER VALUE __________________________ _________________________________ NLS_LANGUAGE ENGLISH NLS_TERRITORY AUSTRALIA NLS_CURRENCY $ NLS_ISO_CURRENCY AUSTRALIA NLS_NUMERIC_CHARACTERS ., NLS_CALENDAR GREGORIAN NLS_DATE_FORMAT DD/MON/RR NLS_DATE_LANGUAGE ENGLISH NLS_CHARACTERSET AL32UTF8 NLS_SORT BINARY NLS_TIME_FORMAT HH12:MI:SSXFF AM NLS_TIMESTAMP_FORMAT DD/MON/RR HH12:MI:SSXFF AM NLS_TIME_TZ_FORMAT HH12:MI:SSXFF AM TZR NLS_TIMESTAMP_TZ_FORMAT DD/MON/RR HH12:MI:SSXFF AM TZR NLS_DUAL_CURRENCY $ NLS_NCHAR_CHARACTERSET AL16UTF16 NLS_COMP BINARY NLS_LENGTH_SEMANTICS BYTE NLS_NCHAR_CONV_EXCP FALSE
निम्नलिखित पैरामीटर संख्याओं और मुद्राओं के लिए स्वरूपण तत्व निर्धारित करते हैं:
NLS_CURRENCY
NLS_ISO_CURRENCY
NLS_NUMERIC_CHARACTERS
NLS_DUAL_CURRENCY
इन मापदंडों का डिफ़ॉल्ट मान NLS_TERRITORY
. द्वारा निर्धारित किया जाता है पैरामीटर। जब हम NLS_TERRITORY
. का मान सेट करते हैं पैरामीटर, यह परोक्ष रूप से विभिन्न अन्य मापदंडों (उल्लिखित चार सहित) के लिए मान सेट करता है।
मेरे मामले में, मेरा क्षेत्र ऑस्ट्रेलिया है, और इसलिए ये चार पैरामीटर दर्शाते हैं कि ऑस्ट्रेलिया में आम तौर पर संख्याओं को कैसे स्वरूपित किया जाता है। अगर मैं इसे जर्मनी कहने के लिए बदलूं, तो जर्मनी के स्वरूपण को दर्शाने के लिए उन चार मानकों को अद्यतन किया जाएगा।
हालाँकि, आप स्पष्ट रूप से प्रत्येक पैरामीटर को अलग-अलग सेट कर सकते हैं। यह आपको उस मान को ओवरराइड करने की अनुमति देता है जो NLS_TERRITORY
. द्वारा निहित रूप से निर्धारित किया गया था पैरामीटर।