FORMAT()
का उपयोग करते समय SQL सर्वर में ऋणात्मक संख्याओं के आसपास कोष्ठक जोड़ने का एक त्वरित तरीका यहां दिया गया है समारोह।
यहां लक्ष्य यह है कि कोष्ठक केवल नकारात्मक . में जोड़े जाते हैं मूल्य। सकारात्मक मान या शून्य में कोई कोष्ठक नहीं जोड़ा जाता है। साथ ही, कोष्ठक किसी भी ऋण चिह्न को प्रतिस्थापित करते हैं जो अन्यथा प्रदर्शित होता (दूसरे शब्दों में, जब कोष्ठक का उपयोग किया जाता है तो कोई ऋण चिह्न प्रदर्शित नहीं होता है)।
हालाँकि स्वरूपण को अक्सर प्रस्तुति परत के लिए सबसे अच्छा छोड़ दिया जाता है, ऐसे मामले हो सकते हैं जो SQL सर्वर में T-SQL समाधान को निर्देशित करते हैं। ऐसे मामलों में, उम्मीद है कि यह लेख मदद करता है।
उदाहरण 1 - स्वचालित कोष्ठक
जैसा कि उल्लेख किया गया है, इस आलेख में समाधान FORMAT()
. का उपयोग करते हैं समारोह। यह फ़ंक्शन एक संख्यात्मक (या दिनांक/समय) मान को स्वरूपित करता है, फिर उस मान का स्वरूपित स्ट्रिंग प्रतिनिधित्व देता है।
इस फ़ंक्शन को कॉल करते समय, आप स्वरूपित होने के लिए मान पास करते हैं, और एक प्रारूप स्ट्रिंग जो यह निर्धारित करती है कि इसे कैसे स्वरूपित किया जाएगा। आप आउटपुट के लिए उपयोग करने के लिए लोकेल/संस्कृति को परिभाषित करने के लिए तीसरा तर्क भी प्रदान कर सकते हैं।
जहां मैं इसके साथ जा रहा हूं, वहां कुछ मामले हैं जहां FORMAT()
प्रारूप स्ट्रिंग और उपयोग की जाने वाली संस्कृति के आधार पर, स्वचालित रूप से नकारात्मक मानों को ब्रैकेट के साथ घेर लेगा।
यहां दो अलग-अलग "संस्कृति" तर्कों का उपयोग करके किसी संख्या को मुद्रा के रूप में स्वरूपित करने का एक उदाहरण दिया गया है:
SELECT FORMAT(-1.23, 'C', 'en-us') 'en-us', FORMAT(-1.23, 'C', 'en-gb') 'en-gb';
परिणाम:
+---------+---------+ | en-us | en-gb | |---------+---------| | ($1.23) | -£1.23 | +---------+---------+
इस मामले में, यह प्रारूप स्ट्रिंग और संस्कृति का एक संयोजन है जो यह निर्धारित करता है कि नकारात्मक मान कोष्ठक से घिरे हैं या नहीं।
C
एक मानक संख्यात्मक प्रारूप विनिर्देशक है, जो संख्या को मुद्रा के रूप में स्वरूपित करता है। जब इस प्रारूप विनिर्देशक का उपयोग किया जाता है, तो सटीक आउटपुट संस्कृति द्वारा निर्धारित किया जाता है। ऐसा इसलिए है क्योंकि विभिन्न संस्कृतियां मुद्रा मात्रा प्रदर्शित करने के लिए विभिन्न सम्मेलनों का उपयोग करती हैं। संस्कृति यह निर्धारित करेगी कि वास्तविक मुद्रा प्रतीक का उपयोग किया जाना है, उसका स्थान, साथ ही साथ नकारात्मक मान कैसे प्रदर्शित होते हैं।
यदि आप कोई संस्कृति निर्दिष्ट नहीं करते हैं, तो वर्तमान सत्र की भाषा का उपयोग किया जाएगा। यह आमतौर पर उपयोगकर्ता के लिए डिफ़ॉल्ट भाषा है, लेकिन इसे SET LANGUAGE
से भी बदला जा सकता है बयान।
उदाहरण 2 - सशर्त स्वरूपण
यदि एक मानक प्रारूप स्ट्रिंग आपको आवश्यक परिणाम प्रदान नहीं करती है, तो आपको इसके बजाय एक कस्टम संख्यात्मक प्रारूप स्ट्रिंग का उपयोग करने की आवश्यकता होगी।
परिणाम को कोष्ठक में संलग्न करने के लिए कस्टम संख्यात्मक प्रारूप स्ट्रिंग का उपयोग करने का एक उदाहरण यहां दिया गया है:
SELECT FORMAT(-123, '0; (0)') Result;
परिणाम:
+----------+ | Result | |----------| | (123) | +----------+
वांछित परिणाम प्राप्त करने के लिए, प्रारूप स्ट्रिंग सशर्त स्वरूपण प्रदान करने के लिए अनुभाग विभाजक का उपयोग करती है।
सशर्त स्वरूपण वह जगह है जहां आप किसी दिए गए शर्त के आधार पर एक अलग प्रारूप निर्दिष्ट करते हैं। FORMAT()
. का उपयोग करते समय फ़ंक्शन, आप किसी संख्या पर भिन्न स्वरूपण लागू करने के लिए सशर्त स्वरूपण का उपयोग कर सकते हैं, यह इस पर निर्भर करता है कि वह संख्या धनात्मक है, ऋणात्मक है या शून्य है।
इस संदर्भ में, अर्धविराम द्वारा सशर्त स्वरूपण संभव बनाया गया है (;
) इसे "सेक्शन सेपरेटर" के रूप में जाना जाता है। इस मामले में, मैंने केवल एक अर्धविराम का उपयोग किया, क्योंकि मुझे केवल दो खंड चाहिए (नकारात्मक और गैर-नकारात्मक के बीच अंतर करने के लिए)।
जब केवल दो खंड शामिल किए जाते हैं, तो पहला खंड सकारात्मक मूल्यों और शून्य दोनों पर लागू होता है। दूसरा खंड नकारात्मक मूल्यों पर लागू होता है। आप केवल शून्य के लिए एक और प्रारूप निर्दिष्ट करने के लिए एक और अर्धविराम भी जोड़ सकते हैं (उस पर और अधिक नीचे)।
उदाहरण 3 - सकारात्मक और शून्य की तुलना में
यहां एक और उदाहरण है, इस बार मैं एक सकारात्मक मान और शून्य शामिल करता हूं (बस बिंदु को और अधिक स्पष्ट रूप से प्रदर्शित करने के लिए)।
SELECT FORMAT(-123, '0; (0)') Negative, FORMAT(123, '0; (0)') Positive, FORMAT(0, '0; (0)') Zero;
परिणाम:
+------------+------------+--------+ | Negative | Positive | Zero | |------------+------------+--------| | (123) | 123 | 0 | +------------+------------+--------+
उदाहरण 4 - वैकल्पिक स्वरूपण
आप केवल कोष्ठक तक सीमित नहीं हैं। उदाहरण के लिए, आप घुंघराले ब्रेसिज़ का उपयोग कर सकते हैं, या वर्गाकार कोष्ठक, या लगभग अपनी पसंद की कोई भी चीज़।
SELECT FORMAT(-123, '0; {0}') R1, FORMAT(-123, '0; [0]') R2, FORMAT(-123, '0; WARNING! NEGATIVE VALUE!!!') R3;
परिणाम:
+--------+--------+-----------------------------+ | R1 | R2 | R3 | |--------+--------+-----------------------------| | {123} | [123] | WARNING! NEGATIVE VALUE!!! | +--------+--------+-----------------------------+
उदाहरण 5 - तीन शर्तें
जैसा कि उल्लेख किया गया है, आप शून्य के लिए अलग स्वरूपण प्रदान करने के लिए तीसरी शर्त भी जोड़ सकते हैं। यहां एक त्वरित उदाहरण दिया गया है:
SELECT FORMAT(-123, '0; (0); 0 (Zero)') R1, FORMAT(123, '0; (0); 0 (Zero)') R2, FORMAT(0, '0; (0); 0 (Zero)') R3;
परिणाम:
+--------+------+-----------+ | R1 | R2 | R3 | |--------+------+-----------| | (123) | 123 | 0 (Zero) | +--------+------+-----------+
उदाहरण 6 - माइनस साइन कहां है?
आपने देखा होगा कि ऋणात्मक मानों पर ऋण चिह्न भी दिखाई नहीं दिया है। ऐसा इसलिए है क्योंकि अनुभाग विभाजक किसी मान (किसी भी ऋण चिह्न सहित) पर किसी भी पहले से मौजूद स्वरूपण को अनदेखा करता है। इसका मतलब यह है कि, यदि आप सशर्त स्वरूपण का उपयोग कर रहे हैं, और आप वास्तव में ऋणात्मक मानों पर ऋण चिह्न चाहते हैं, तो आपको इसे अपनी प्रारूप स्ट्रिंग में जोड़ना होगा:
SELECT FORMAT(-123, '0; 0 (Negative); 0 (Zero)') 'Without Minus Sign', FORMAT(-123, '0; -0 (Negative); 0 (Zero)') 'With Minus Sign';
परिणाम:
+----------------------+-------------------+ | Without Minus Sign | With Minus Sign | |----------------------+-------------------| | 123 (Negative) | -123 (Negative) | +----------------------+-------------------+
हालांकि, कुछ ऐसे मामले हैं जहां ऋण चिह्न बरकरार रहता है (कम से कम मेरे सिस्टम पर):
SELECT FORMAT(123, '0;; 0 (Zero)') Positive, FORMAT(-123, '0;; 0 (Zero)') Negative;
परिणाम:
+------------+------------+ | Positive | Negative | |------------+------------| | 123 | -123 | +------------+------------+
इस उदाहरण में, नकारात्मक और सकारात्मक मान समान अनुभाग साझा करते हैं। ऐसा इसलिए है क्योंकि मैंने नकारात्मक मानों के लिए एक सेक्शन सेपरेटर जोड़ा है लेकिन इसे खाली छोड़ दिया है। इस मामले में, पहले खंड में प्रारूप स्ट्रिंग सकारात्मक और . दोनों पर लागू होती है नकारात्मक मूल्य।
जैसा कि उल्लेख किया गया है, इस मामले में, ऋणात्मक मानों के लिए ऋण चिह्न बरकरार रहता है।