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

SQL सर्वर में स्ट्रिंग और नल मानों को कैसे संयोजित करें

समस्या:

आप SQL सर्वर में किसी भिन्न कॉलम से स्ट्रिंग मानों के साथ NULLs को जोड़ना चाहते हैं।

उदाहरण:

हमारे डेटाबेस में children निम्नलिखित कॉलम में डेटा के साथ:id (प्राथमिक कुंजी), first_name , मध्य_नाम , और last_name

<थ>प्रथम_नाम
आईडी मध्य_नाम last_name
1 लिंडा NULL जैक्सन
2 मैरी एलिस थॉमसन
3 NULL स्टीवन NULL
4 NULL NULL भूरा

हम एक कॉलम से पहला नाम, अगले कॉलम से मध्य नाम, और अंतिम कॉलम से अंतिम नाम एक स्ट्रिंग के रूप में प्रदर्शित करना चाहते हैं, भले ही कॉलम में से कोई एक NULL स्टोर करता हो।

समाधान 2:

हम CONCAT() . का उपयोग करेंगे समारोह। यहां वह प्रश्न है जो आप लिखेंगे:

SELECT 
  CONCAT(first_name,  middle_name, last_name) AS name
FROM children;

ये रहा परिणाम:

नाम
लिंडा जैक्सन
मैरी ऐलिस थॉमसन
स्टीवन
भूरा

चर्चा:

CONCAT() का उपयोग करें अभिव्यक्ति या कॉलम से स्ट्रिंग मानों को जोड़ने के लिए फ़ंक्शन जिसमें NULL होता है। यह फ़ंक्शन स्ट्रिंग्स (या NULLs) की एक सूची लेता है और इन सभी मानों को एक स्ट्रिंग में प्रदर्शित करता है। मानों के बीच कोई विभाजक नहीं है, इसलिए परिणाम (जैसा कि हमारे उदाहरण में है) आपकी अपेक्षा के अनुरूप प्रारूपित नहीं हो सकते हैं। हम इसे कैसे ठीक कर सकते हैं? एक और CONCAT() देखें क्वेरी:

समाधान 2:

यहां एक और क्वेरी विकल्प दिया गया है:

SELECT 
  CONCAT(first_name,' ' , middle_name, ' ',last_name) AS name
FROM children;

ये रहा परिणाम:

नाम
लिंडा जैक्सन
मैरी एलिस थॉमसन
स्टीवन
भूरा

अब, स्ट्रिंग मानों के अलावा, यह फ़ंक्शन कुछ रिक्त स्थान भी लेता है (समवर्ती मानों के बीच रखा जाता है)। यह नाम के एक हिस्से को दूसरे से अलग करता है। लेकिन जैसा कि हम देखते हैं, यह समाधान भी आदर्श नहीं है; मध्य नामों के बिना पूर्ण नामों में एक अतिरिक्त स्थान होता है, जबकि केवल एक नाम वाले रिकॉर्ड में दो अतिरिक्त स्थान होते हैं।

इस मामले में, CONCAT_WS() फ़ंक्शन बेहतर समाधान है।

समाधान 3:

CONCAT_WS() फ़ंक्शन एक अतिरिक्त पहला तर्क लेता है:एक वर्ण जो स्ट्रिंग्स के बीच विभाजक के रूप में कार्य करता है। ये रही क्वेरी:

SELECT 
  CONCAT_WS(' ' , first_name, middle_name, last_name) AS name
FROM children;

और परिणाम:

नाम
लिंडा जैक्सन
मैरी एलिस थॉमसन
स्टीवन
भूरा

यह क्वेरी बिना किसी अनावश्यक स्थान के बच्चों के पूरे नाम दिखाती है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अलग-अलग इंसर्ट स्टेटमेंट को निष्पादित करने के लिए काउंट के आधार पर IF ELSE स्टेटमेंट का उपयोग करना

  2. Salesforce SOQL के साथ SQL सर्वर का उपयोग करने के लिए युक्तियाँ

  3. SQL सर्वर (T-SQL) में दिनांक से वर्ष का दिन प्राप्त करें

  4. एसक्यूएल को स्टोर्ड प्रोसेस बनाम कोड में रखने के पक्ष और विपक्ष क्या हैं?

  5. मैं एक फ़ंक्शन बनाए बिना SQL सर्वर में एक सीमांकित स्ट्रिंग को कैसे विभाजित करूं?