Postgres में किसी संख्या को मुद्रा के रूप में प्रारूपित करने के लिए, आप या तो इसे धन डेटा प्रकार में बदल सकते हैं, या to_char()
का उपयोग कर सकते हैं इसे ऐसे टेक्स्ट में बदलने के लिए जिसमें उपयुक्त मुद्रा चिह्न शामिल हो।
यह स्पष्ट रूप से मानता है कि संख्या पहले से ही धन प्रकार का उपयोग करके संग्रहीत नहीं है।
नीचे इनमें से प्रत्येक विकल्प के उदाहरण दिए गए हैं।
पैसे में बदलें
यहां किसी संख्या को धन डेटा प्रकार में बदलने का एक उदाहरण दिया गया है।
SELECT cast(12 as money);
परिणाम:
$12.00
यहां एक और उदाहरण दिया गया है, इस बार अधिक राशि का उपयोग कर रहे हैं।
SELECT cast(123456.78 as money);
परिणाम:
$123,456.78
फ्लोटिंग पॉइंट नंबर से कनवर्ट करें
राउंडिंग त्रुटियों की संभावना के कारण पैसे को संभालने के लिए फ़्लोटिंग पॉइंट नंबरों का उपयोग करने के खिलाफ अनुशंसा की जाती है। हालांकि, अगर आपको यह करना ही है, तो आप पहले अंकीय में बदल सकते हैं, फिर पैसे में।
SELECT '123456.78'::float8::numeric::money;
परिणाम:
$123,456.78
अगर आप सीधे फ्लोटिंग पॉइंट से पैसे में बदलने की कोशिश करते हैं, तो आपको एक त्रुटि मिलेगी।
SELECT '123456.78'::float8::money;
परिणाम:
ERROR: cannot cast type double precision to money
टेक्स्ट में कनवर्ट करें
यहां to_char()
using का उपयोग करने का एक उदाहरण दिया गया है मुद्रा प्रतीक के साथ मूल्य को टेक्स्ट में बदलने के लिए शामिल है।
SELECT to_char(12, 'L99D99');
परिणाम:
$ 12.00
यहां, मुद्रा प्रतीक और दशमलव स्थान दोनों वर्तमान लोकेल का उपयोग करते हैं।
to_char()
. के लिए प्रारूप स्ट्रिंग अपेक्षित राशि के लिए उपयुक्त होने की आवश्यकता होगी।
उदाहरण के लिए, यदि राशि सैकड़ों हजारों में जा सकती है, तो निम्न प्रारूप स्ट्रिंग अधिक उपयुक्त होगी।
SELECT to_char(123456.78, 'L999G999D99');
परिणाम:
$ 123,456.78
इस मामले में मैंने G
. जोड़ा स्थानीय-जागरूक समूह विभाजक के लिए टेम्पलेट पैटर्न (जिसे "हजारों विभाजक" भी कहा जाता है)। मैं अल्पविराम का उपयोग कर सकता था (,
), लेकिन वह स्थानीय-जागरूक नहीं होता।
और मैंने फिर से D
. जोड़ा स्थानीय-जागरूक दशमलव बिंदु के लिए टेम्पलेट पैटर्न।
अगर मैं अपनी प्रारूप स्ट्रिंग से उन दो टेम्पलेट पैटर्न को हटा दूं तो यहां क्या होगा।
SELECT to_char(123456.78, 'L999999');
परिणाम:
$ 123457
महत्वहीन शून्य
आप 0
का उपयोग कर सकते हैं 9
. के बजाय महत्वहीन शून्य रखने के लिए।
9
टेम्पलेट पैटर्न किसी भी महत्वहीन शून्य को गिरा देता है जबकि 0
टेम्पलेट पैटर्न नहीं है।
यहां एक उदाहरण दिया गया है जो दोनों के बीच के अंतर को दर्शाता है।
SELECT
to_char(12, 'L9999') AS "L9999",
to_char(12, 'L0000') AS "L0000";
परिणाम:
L9999 | L0000 --------+-------- $ 12 | $ 0012
फिल मोड
एक आसान टेम्पलेट पैटर्न संशोधक है जिसे FM
. कहा जाता है . यह "फिल मोड" के लिए है, और यह पिछला शून्य और प्रमुख रिक्त स्थान को दबा देता है।
इसलिए हम पिछले उदाहरण को संशोधित करने के लिए उस संशोधक का उपयोग कर सकते हैं।
SELECT
to_char(12, 'LFM9999') AS "LFM9999",
to_char(12, 'LFM0000') AS "LFM0000";
परिणाम:
LFM9999 | LFM0000 ---------+--------- $12 | $0012
ध्यान दें कि इसने डॉलर चिह्न और संख्या के बीच प्रमुख रिक्त स्थान को दबा दिया है।