PostgreSQL में, आप to_char()
. का उपयोग कर सकते हैं किसी संख्या को एक निश्चित प्रारूप में आउटपुट करने के लिए, जिसमें धनात्मक या ऋणात्मक संख्या है या नहीं, यह इंगित करने के लिए प्लस या माइनस चिह्न सहित।
ऐसा करने के लिए, S
. में से किसी एक का उपयोग करें , MI
, PL
, या SG
आपके प्रारूप स्ट्रिंग में।
एक अन्य विकल्प PR
. का उपयोग करना है कोण कोष्ठक में किसी भी ऋणात्मक मान को संलग्न करने के लिए।
हस्ताक्षरित संख्याओं के लिए टेम्पलेट पैटर्न
संख्या पर उपयुक्त चिह्न लगाने के लिए निम्नलिखित टेम्पलेट पैटर्न का उपयोग किया जा सकता है।
पैटर्न | <थ>विवरण|
---|---|
MI | निर्दिष्ट स्थिति में माइनस साइन इन करें (यदि संख्या <0) है। |
PL | इसके अलावा निर्दिष्ट स्थिति में साइन इन करें (यदि संख्या> 0)। |
SG | संख्या धनात्मक है या ऋणात्मक इस पर निर्भर करते हुए निर्दिष्ट स्थिति में प्लस या माइनस साइन इन करें। |
S | संख्या के लिए लंगर डाले (स्थानीय भाषा का उपयोग करता है)। |
PR | इसमें कोण कोष्ठक के अंदर कोई भी ऋणात्मक मान शामिल होता है। |
ध्यान दें कि MI
, PL
, या SG
Postgres एक्सटेंशन हैं (वे मानक SQL नहीं हैं)।
S का उपयोग करने का उदाहरण
S
को प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है पैटर्न।
SELECT to_char(1, 'S9');
परिणाम:
+1
इस मामले में, संख्या धनात्मक होती है और इसलिए मेरे स्थान का उपयोग करते हुए, धन चिह्न इसके साथ जोड़ा जाता है।
यहाँ यह फिर से है, लेकिन तीन मूल्यों के साथ; एक सकारात्मक, एक नकारात्मक और शून्य।
SELECT
to_char(1, 'S9') AS "1",
to_char(-1, 'S9') AS "-1",
to_char(0, 'S9') AS "0";
परिणाम:
1 | -1 | 0 ----+----+---- +1 | -1 | +0
एसजी का उपयोग करने का उदाहरण
यहां SG
के साथ एक ही उदाहरण दिया गया है पैटर्न।
SELECT
to_char(1, 'SG9') AS "1",
to_char(-1, 'SG9') AS "-1",
to_char(0, 'SG9') AS "0";
परिणाम:
1 | -1 | 0 ----+----+---- +1 | -1 | +0
MI का उपयोग करने का उदाहरण
अगर मैं SG
को स्वैप करता हूं तो यहां क्या होता है? MI
. के साथ ।
SELECT
to_char(1, 'MI9') AS "1",
to_char(-1, 'MI9') AS "-1",
to_char(0, 'MI9') AS "0";
परिणाम:
1 | -1 | 0 ----+----+---- 1 | -1 | 0
केवल ऋणात्मक संख्या को ऋणात्मक चिह्न प्राप्त होता है। धनात्मक संख्या और शून्य को कोई चिन्ह नहीं मिलता है।
PL का उपयोग करने का उदाहरण
जब मैं PL
. का उपयोग करता हूं तो मेरे सिस्टम पर आउटपुट यहां दिया गया है ।
SELECT
to_char(1, 'PL9') AS "1",
to_char(-1, 'PL9') AS "-1",
to_char(0, 'PL9') AS "0";
परिणाम:
1 | -1 | 0 -----+-----+----- + 1 | -1 | + 0
PR का उपयोग करने का उदाहरण
जब मैं PR
. का उपयोग करता हूं तो मेरे सिस्टम पर आउटपुट यहां दिया गया है ।
SELECT
to_char(1, '9PR') AS "1",
to_char(-1, '9PR') AS "-1",
to_char(0, '9PR') AS "0";
परिणाम:
1 | -1 | 0 -----+-----+----- 1 | <1> | 0
ध्यान दें कि PR
बाद आना चाहिए 9
।
अगर मैं इसे 9
. से पहले रखने की कोशिश करता हूं तो यहां क्या होता है :
SELECT
to_char(1, 'PR9') AS "1",
to_char(-1, 'PR9') AS "-1",
to_char(0, 'PR9') AS "0";
परिणाम:
ERROR: "9" must be ahead of "PR"
एसजी बनाम एस
आपने देखा होगा कि SG
. का उपयोग करने वाले उदाहरण और S
ऐसा लगता है कि एक ही परिणाम का उत्पादन होता है, और इसलिए आश्चर्य होता है कि उनके बीच क्या अंतर है।
अंतर यह है कि S
संख्या से जुड़ा है जबकि SG
, MI
, PL
नहीं हैं।
S
लोकेल का भी उपयोग करता है, इसलिए उपयोग किया गया वास्तविक चिन्ह आपके लोकेल पर निर्भर करेगा।
यहां एक उदाहरण दिया गया है जो एंकरिंग के अंतर को दर्शाता है।
SELECT
to_char(1, 'S999') AS "S",
to_char(1, 'SG999') AS "SG";
परिणाम:
S | SG ------+------ +1 | + 1
और संख्या बढ़ने पर क्या होता है।
SELECT
to_char(1, 'S999') AS "S",
to_char(1, 'SG999') AS "SG",
to_char(10, 'S999') AS "S",
to_char(10, 'SG999') AS "SG",
to_char(100, 'S999') AS "S",
to_char(100, 'SG999') AS "SG";
परिणाम:
S | SG | S | SG | S | SG ------+------+------+------+------+------ +1 | + 1 | +10 | + 10 | +100 | +100