Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर (T-SQL) में FORMAT () फ़ंक्शन कैसे काम करता है

SQL सर्वर में, आप T-SQL का उपयोग कर सकते हैं FORMAT() स्वरूपित स्ट्रिंग्स के रूप में संख्याओं और तिथियों जैसे मानों को वापस करने के लिए कार्य करता है।

आप स्वरूपित करने के लिए मान प्रदान करते हैं, और आप उपयोग करने के लिए प्रारूप निर्दिष्ट करते हैं। फ़ंक्शन एक वैकल्पिक तर्क स्वीकार करता है जो आपको मान को स्वरूपित करते समय उपयोग करने के लिए एक संस्कृति निर्दिष्ट करने की अनुमति देता है।

सिंटैक्स

वाक्य रचना इस प्रकार है:

FORMAT ( value, format [, culture ] )

जहां value वह मान है जिसे आप स्वरूपित करना चाहते हैं, और format एक मान्य प्रारूप स्ट्रिंग है जो वांछित प्रारूप निर्दिष्ट करती है।

वैकल्पिक culture तर्क का उपयोग संस्कृति को निर्दिष्ट करने के लिए किया जा सकता है। यदि छोड़ा गया है, तो वर्तमान सत्र की भाषा का उपयोग किया जाता है।

FORMAT फ़ंक्शन गैर नियतात्मक है।

उदाहरण 1 - नंबर फ़ॉर्मैट करें

यहां किसी संख्या को स्वरूपित करने का एक उदाहरण दिया गया है:

SELECT FORMAT(1, 'N') AS Result;

परिणाम:

+----------+
| Result   |
|----------|
| 1.00     |
+----------+

इस मामले में, मैंने N . का उपयोग किया प्रारूप स्ट्रिंग के रूप में। यह मान को एक संख्या के रूप में आउटपुट करने के लिए एक मानक संख्यात्मक प्रारूप विनिर्देशक है। यह विशेष प्रारूप विनिर्देशक परिणाम में आउटपुट को अभिन्न और दशमलव अंकों, समूह विभाजक, और वैकल्पिक नकारात्मक चिह्न के साथ एक दशमलव विभाजक के साथ स्वरूपित किया जा रहा है। यह प्रारूप विनिर्देशक केस-असंवेदनशील है, इसलिए या तो N या n ठीक है।

उदाहरण 2 - मुद्रा को प्रारूपित करें

किसी संख्या को मुद्रा के रूप में स्वरूपित करने का एक उदाहरण यहां दिया गया है:

SELECT FORMAT(1, 'C') AS Result;

परिणाम:

+----------+
| Result   |
|----------|
| $1.00    |
+----------+

अधिक संख्यात्मक प्रारूप

कई और प्रारूप स्ट्रिंग हैं जिनका उपयोग FORMAT() . के साथ किया जा सकता है समारोह। उदाहरण के लिए, प्रतिशत, निश्चित-बिंदु, घातांक (वैज्ञानिक), हेक्साडेसिमल, और बहुत कुछ के लिए प्रारूप स्ट्रिंग हैं।

संख्यात्मक प्रारूप स्ट्रिंग्स को मानक और कस्टम में विभाजित किया गया है।

निम्नलिखित दो लेख उदाहरणों सहित सभी संख्यात्मक प्रारूप स्ट्रिंग्स को सूचीबद्ध करते हैं:

  • मानक संख्यात्मक प्रारूप स्ट्रिंग्स
  • कस्टम संख्यात्मक प्रारूप स्ट्रिंग्स

स्वरूपण संख्याओं के अधिक उदाहरणों के लिए SQL सर्वर में संख्याओं को प्रारूपित करने का तरीका भी देखें।

उदाहरण 3 - एक तिथि प्रारूपित करें

यहां दिनांक स्वरूपित करने का एक उदाहरण दिया गया है:

SELECT 
  GETDATE() AS 'Unformatted Date',
  FORMAT( GETDATE(), 'D') AS 'Formatted Date';

परिणाम:

+-------------------------+------------------------+
| Unformatted Date        | Formatted Date         |
|-------------------------+------------------------|
| 2019-05-08 06:16:55.613 | Wednesday, May 8, 2019 |
+-------------------------+------------------------+

इस मामले में, मैंने D . का उपयोग किया जो एक लंबी तिथि पैटर्न निर्दिष्ट करता है।

अधिक दिनांक प्रारूप

कई और प्रारूप स्ट्रिंग हैं जिनका उपयोग दिनांक स्वरूपण के लिए किया जा सकता है। जैसा कि संख्यात्मक प्रारूप स्ट्रिंग्स के साथ होता है, दिनांक और समय प्रारूप स्ट्रिंग्स को मानक और कस्टम में विभाजित किया जाता है, इसलिए आप अपने स्वयं के कस्टम प्रारूप बना सकते हैं, या आप एक मानक पर भरोसा कर सकते हैं।

निम्नलिखित दो लेख उदाहरणों सहित सभी दिनांक और समय प्रारूप स्ट्रिंग्स को सूचीबद्ध करते हैं:

  • मानक दिनांक और समय प्रारूप स्ट्रिंग्स
  • कस्टम दिनांक और समय प्रारूप स्ट्रिंग्स

अधिक उदाहरणों के लिए SQL सर्वर में दिनांक और समय को प्रारूपित करने का तरीका भी देखें।

उदाहरण 4 - वैकल्पिक culture तर्क

यहां culture का उपयोग करने का एक उदाहरण दिया गया है विभिन्न मुद्राओं में मान लौटाने का तर्क:

SELECT 
    FORMAT(1, 'C', 'fr-FR') AS 'France', 
    FORMAT(1, 'C', 'th-TH') AS 'Thailand', 
    FORMAT(1, 'C', 'ja-JP') AS 'Japan';

परिणाम:

+----------+------------+---------+
| France   | Thailand   | Japan   |
|----------+------------+---------|
| 1,00 €   | ฿1.00      | ¥1      |
+----------+------------+---------+

FORMAT() फ़ंक्शन .NET Framework द्वारा समर्थित किसी भी संस्कृति को तर्क के रूप में स्वीकार करता है; यह SQL सर्वर द्वारा स्पष्ट रूप से समर्थित भाषाओं तक सीमित नहीं है।

यदि आप यह तर्क नहीं देते हैं, तो वर्तमान सत्र की भाषा का उपयोग किया जाता है।

अधिक उदाहरणों के लिए, देखें कि भाषा सेटिंग्स आपके FORMAT() को कैसे प्रभावित कर सकती हैं परिणाम।

उदाहरण 5 - अमान्य culture तर्क

यदि आप एक अमान्य संस्कृति प्रदान करते हैं, तो आपको एक त्रुटि मिलेगी:

SELECT FORMAT(1, 'C', 'oop-SS!') AS 'Oops!';

परिणाम:

The culture parameter 'oop-SS!' provided in the function call is not supported.

उदाहरण 6 - अमान्य प्रारूप मान

हालांकि, अन्य त्रुटियों के लिए, फ़ंक्शन NULL लौटाता है . उदाहरण के लिए, अगर मैं फ़ॉर्मेट करने के लिए अमान्य मान प्रदान करता हूं तो क्या होगा:

SELECT FORMAT(GETDATE(), 'C') AS 'Result';

परिणाम:

+----------+
| Result   |
|----------|
| NULL     |
+----------+

इस मामले में, मैं एक तिथि को मुद्रा में प्रारूपित करने का प्रयास कर रहा था, और इसलिए परिणाम NULL था ।

मान्य डेटा प्रकार

FORMAT() .NET Framework सामान्य भाषा रनटाइम (CLR) की उपस्थिति पर निर्भर करता है, और CLR स्वरूपण नियमों का उपयोग करता है।

निम्न डेटा प्रकारों को FORMAT() . के साथ स्वरूपित किया जा सकता है समारोह। इस सूची में इनपुट स्ट्रिंग के लिए उनके .NET फ्रेमवर्क मैपिंग समकक्ष प्रकारों के साथ स्वीकार्य डेटा प्रकार शामिल हैं।

श्रेणी प्रकार .नेट प्रकार
संख्यात्मक बिगिंट Int64
संख्यात्मक इंट Int32
संख्यात्मक छोटा Int16
संख्यात्मक छोटा बाइट
संख्यात्मक दशमलव एसक्लडेसिमल
संख्यात्मक संख्यात्मक एसक्लडेसिमल
संख्यात्मक फ्लोट दोहरा
संख्यात्मक असली एकल
संख्यात्मक छोटा पैसा दशमलव
संख्यात्मक पैसा दशमलव
तारीख और समय तारीख दिनांक समय
तारीख और समय समय समय अवधि
तारीख और समय दिनांक समय दिनांक समय
तारीख और समय स्मॉलडेटटाइम दिनांक समय
तारीख और समय डेटाटाइम2 दिनांक समय
तारीख और समय डेटाटाइमऑफ़सेट DateTimeOffset

'समय' डेटा प्रकार के लिए कोलन और अवधियों से बचना

FORMAT using का उपयोग करते समय , कोलन और पीरियड्स से बचना चाहिए (यह CLR फ़ॉर्मेटिंग नियमों का पालन करता है)। इसलिए, जब प्रारूप स्ट्रिंग (द्वितीय पैरामीटर) में एक कोलन या अवधि होती है, तो जब इनपुट मान (पहला पैरामीटर) समय का होता है, तो कोलन या अवधि को बैकस्लैश से बचना चाहिए। डेटा प्रकार।

उदाहरण:

SELECT 
  CAST('12:15' AS time) AS 'Unformatted Data',
  FORMAT(CAST('12:15' AS time), N'hh.mm') AS 'Unescaped',
  FORMAT(CAST('12:15' AS time), N'hh\.mm') AS 'Escaped';

परिणाम:

+--------------------+-------------+-----------+
| Unformatted Data   | Unescaped   | Escaped   |
|--------------------+-------------+-----------|
| 12:15:00           | NULL        | 12.15     |
+--------------------+-------------+-----------+

तो जैसा कि अपेक्षित था, अनकैप्ड स्ट्रिंग रिटर्न NULL

जैसा कि बताया गया है, यह केवल समय . पर लागू होता है डेटा प्रकार। यदि हम इनपुट मान को किसी भिन्न डेटा प्रकार में बदलते हैं, तो हमें इससे बचने की आवश्यकता नहीं है:

SELECT 
  CAST('12:15' AS datetime) AS 'Unformatted Data',
  FORMAT(CAST('12:15' AS datetime), N'hh.mm') AS 'Unescaped',
  FORMAT(CAST('12:15' AS datetime), N'hh.mm') AS 'Escaped';

परिणाम:

+-------------------------+-------------+-----------+
| Unformatted Data        | Unescaped   | Escaped   |
|-------------------------+-------------+-----------|
| 1900-01-01 12:15:00.000 | 12.15       | 12.15     |
+-------------------------+-------------+-----------+

इस मामले में, इनपुट मान डेटाटाइम . है , और इसलिए, इससे बचने के बिना परिणाम ठीक है।

आप परिणाम स्ट्रिंग में शामिल किसी अन्य वर्ण से बचने के लिए बैकस्लैश का भी उपयोग कर सकते हैं, जिसे अन्यथा प्रारूप विनिर्देशक के रूप में व्याख्या किया जाएगा। बैकस्लैश के साथ एक वर्ण से पहले यह दर्शाता है कि निम्न वर्ण एक अक्षर अक्षर है जिसे परिणाम स्ट्रिंग में अपरिवर्तित शामिल किया जाना चाहिए।

एक कस्टम दिनांक और समय प्रारूप स्ट्रिंग में, d , f , f , g , h , h , K , m , m , s , t , y , z , : , या / वर्णों को शाब्दिक वर्णों के बजाय कस्टम प्रारूप विनिर्देशक के रूप में व्याख्यायित किया जाता है।

एक कस्टम संख्यात्मक प्रारूप स्ट्रिंग में, # , 0 , . , , , % , और प्रतीकों को शाब्दिक वर्णों के बजाय प्रारूप विनिर्देशक के रूप में व्याख्यायित किया जाता है। अपरकेस और लोअरकेस E साथ ही + और - प्रारूप स्ट्रिंग के भीतर उनकी स्थिति के आधार पर प्रतीकों को प्रारूप विनिर्देशक के रूप में भी व्याख्यायित किया जा सकता है।

यदि आपको परिणाम स्ट्रिंग में बैकस्लैश शामिल करने की आवश्यकता है, तो इसे किसी अन्य बैकस्लैश से बचें।

रिमोटिंग

FORMAT() फ़ंक्शन को रिमोट नहीं किया जा सकता क्योंकि यह सीएलआर की उपस्थिति पर निर्भर करता है। सीएलआर की आवश्यकता वाले फ़ंक्शन को हटाने से दूरस्थ सर्वर पर त्रुटि हो सकती है।

FORMAT() का उपयोग कब करें समारोह

Microsoft अनुशंसा करता है कि FORMAT() फ़ंक्शन का उपयोग स्ट्रिंग के रूप में दिनांक/समय और संख्या मानों के स्थानीय-जागरूक स्वरूपण के लिए किया जाता है, और सामान्य डेटा प्रकार रूपांतरणों के लिए, या तो CAST() फ़ंक्शन या CONVERT() इसके बजाय फ़ंक्शन का उपयोग किया जाना चाहिए।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. इसमें डालें... मर्ज करें... चुनें (एसक्यूएल सर्वर)

  2. वर्चर के रूप में संग्रहीत तिथियों की तुलना करना

  3. COUNT SQL फ़ंक्शन का प्रदर्शन

  4. सर्वर के साथ एक कनेक्शन सफलतापूर्वक स्थापित किया गया था, लेकिन फिर प्री-लॉगिन हैंडशेक के दौरान एक त्रुटि हुई

  5. एक विश्वसनीय कनेक्शन क्या है?