यदि आपने कभी SQL सर्वर का उपयोग करते समय किसी स्ट्रिंग को किसी संख्या के साथ संयोजित करने का प्रयास किया है, लेकिन एक त्रुटि प्राप्त हुई है, तो इस लेख से आपके लिए चीजें स्पष्ट होनी चाहिए। SQL सर्वर में T-SQL का उपयोग करके संयोजन करने के एक से अधिक तरीके हैं, और यदि आप विभिन्न डेटा प्रकारों (जैसे एक स्ट्रिंग और एक संख्या) को संयोजित कर रहे हैं, तो आप एक त्रुटि प्राप्त कर सकते हैं, यह इस बात पर निर्भर करता है कि आप संयोजन कैसे करते हैं।पी>
विभिन्न डेटा प्रकारों को संयोजित करते समय याद रखने वाली बात यह है कि उन्हें पहले एक ही डेटा प्रकार में परिवर्तित करने की आवश्यकता होती है। अधिक विशेष रूप से, जब किसी स्ट्रिंग को किसी संख्या के साथ संयोजित किया जाता है, तो उसे स्ट्रिंग के साथ जोड़ने से पहले संख्या को एक स्ट्रिंग में परिवर्तित करने की आवश्यकता होगी। सौभाग्य से SQL सर्वर/T-SQL इसे आसान बनाता है।
यह लेख टी-एसक्यूएल का उपयोग करके स्ट्रिंग्स को संख्याओं के साथ जोड़ने के छह तरीके प्रस्तुत करता है।
CONCAT() फ़ंक्शन
एक स्ट्रिंग और एक संख्या को जोड़ने का सबसे स्पष्ट (और संभवतः सबसे अच्छा) तरीका CONCAT()
का उपयोग करना है समारोह। यह आपको स्ट्रिंग और संख्या को दो अलग-अलग तर्कों के रूप में प्रदान करने की अनुमति देता है। SQL सर्वर तब उन्हें जोड़ देगा, और आपका संयोजन पूरा हो गया है।
उदाहरण
SELECT CONCAT('Comments: ', 9) AS Result;
परिणाम:
Result ----------- Comments: 9
जैसा कि आप देख सकते हैं, यह पूरी तरह से काम करता है। स्ट्रिंग और संख्या को एक फ़ील्ड के रूप में प्रस्तुत किया जाता है।
ध्यान दें कि आप केवल एक स्ट्रिंग और एक नंबर तक सीमित नहीं हैं - CONCAT()
फ़ंक्शन अधिकतम 254 तर्कों को स्वीकार कर सकता है (अर्थात आप अधिकतम 254 स्ट्रिंग्स/संख्याओं को एक साथ जोड़ सकते हैं।
यह भी ध्यान रखें कि CONCAT()
संयोजन से पहले सभी तर्कों को स्ट्रिंग प्रकारों में निहित रूप से परिवर्तित करता है। साथ ही, CONCAT()
परोक्ष रूप से किसी भी अशक्त मान को रिक्त स्ट्रिंग में कनवर्ट करता है।
CONCAT_WS() फ़ंक्शन
हम CONCAT_WS()
. का उपयोग करके पिछले उदाहरण को एक कदम आगे ले जा सकते हैं समारोह। यह फ़ंक्शन आपको एक विभाजक निर्दिष्ट करने की अनुमति देता है।
विभाजक प्रदान करने के लिए, बस इसे पहले तर्क के रूप में जोड़ें। फिर स्ट्रिंग और संख्या को दूसरे और तीसरे तर्क के रूप में निर्दिष्ट करें।
SELECT CONCAT_WS(': ', 'Comments', 9) AS Result;
परिणाम:
Result ----------- Comments: 9
ध्यान दें कि यह फ़ंक्शन नाम/मूल्य जोड़े को अलग करने के लिए आवश्यक रूप से उपयुक्त नहीं है, क्योंकि विभाजक प्रत्येक व्यक्तिगत आइटम के बीच जोड़ा जाता है जो कि जुड़ा हुआ है (इसलिए इसे प्रत्येक जोड़ी के बीच भी जोड़ा जाएगा यदि आपके पास कई जोड़े हैं)। हमारे मामले में यह ठीक काम करता है, क्योंकि हमारे पास जोड़ने के लिए केवल एक नाम/मूल्य जोड़ी है।
हालांकि, आप हमेशा एक से अधिक CONCAT_WS()
नेस्ट कर सकते हैं आपकी आवश्यकताओं के लिए सही संयोजन वापस करने के लिए कार्य करता है (ताकि आप प्रत्येक जोड़ी के बीच एक अलग विभाजक रख सकें)।
कन्वर्ट() फ़ंक्शन
यदि किसी कारण से आप CONCAT()
. का उपयोग नहीं कर सकते (या नहीं करना चाहते) या CONCAT_WS()
फ़ंक्शन, आप स्ट्रिंग कॉन्सटेनेशन ऑपरेटर (+
. का उपयोग करके एक संयोजन निष्पादित कर सकते हैं ) जब आप इस पद्धति का उपयोग करते हैं, तो आपको मैन्युअल रूप से कोई भी डेटा प्रकार रूपांतरण करने की आवश्यकता होगी।
डेटा प्रकारों के बीच कनवर्ट करने का एक तरीका CONVERT()
. का उपयोग करना है समारोह।
यहां बताया गया है कि आप पिछले उदाहरणों के समान डेटा का उपयोग करके ऐसा कैसे करेंगे:
SELECT 'Comments: ' + CONVERT(varchar(12), 9) AS Result;
परिणाम:
Result ----------- Comments: 9
इस मामले में मैं पूर्णांक को वर्चर (12) में परिवर्तित करता हूं, लेकिन यह आपके लिए आवश्यक कोई भी डेटा प्रकार और लंबाई हो सकती है।
द कास्ट () फंक्शन
CAST()
फ़ंक्शन बहुत हद तक CONVERT()
. के समान है समारोह। मुख्य अंतर यह है कि CAST()
मानक एएनएसआई है और CONVERT()
टी-एसक्यूएल के लिए विशिष्ट है। ऐसा कहने के बाद, CONVERT()
कुछ अतिरिक्त कार्यक्षमता है, लेकिन इन उदाहरणों के प्रयोजनों के लिए, आप इनमें से किसी एक का उपयोग कर सकते हैं।
ये रहा CAST()
पिछले उदाहरणों के समान डेटा का उपयोग करने वाला संस्करण:
SELECT 'Comments: ' + CAST(9 AS varchar(12)) AS Result;
परिणाम:
Result ----------- Comments: 9
TRY_CONVERT() फ़ंक्शन
CONVERT()
. का उपयोग करते समय एक संभावित समस्या फ़ंक्शन यह है कि, यदि रूपांतरण सफल नहीं होता है, तो आपको एक त्रुटि मिलेगी। हालांकि यह कई मामलों में ठीक है, कुछ मामलों में यह वांछनीय नहीं भी हो सकता है। ऐसे मामलों में, आपको TRY_CONVERT()
. मिल सकता है अधिक उपयुक्त।
TRY_CONVERT()
फ़ंक्शन डेटा प्रकार को CONVERT()
. के रूप में रूपांतरित करता है समारोह करता है। हालाँकि, यदि डेटा को परिवर्तित नहीं किया जा सकता है, तो यह null
लौटाएगा ।
उदाहरण के लिए, यदि हम निम्नलिखित करने का प्रयास करते हैं, तो हमें एक त्रुटि मिलती है:
SELECT 'Comments: ' + CONVERT(varchar(1), 10.00) AS Result;
परिणाम:
Error: Arithmetic overflow error converting numeric to data type varchar.
हालांकि, अगर हम TRY_CONVERT()
. का उपयोग करते हैं , हमें null
मिलता है :
SELECT 'Comments: ' + TRY_CONVERT(varchar(1), 10.00) AS Result;
परिणाम:
Result ------ null
आप इस मामले में परिणाम के आधार पर एक अलग कार्य करने के लिए सशर्त प्रोग्रामिंग का उपयोग कर सकते हैं।
TRY_CAST() फ़ंक्शन
TRY_CAST()
फ़ंक्शन उसी तरह काम करता है। यह डेटा प्रकार को CAST()
. की तरह ही रूपांतरित करता है फ़ंक्शन करता है, और, यदि डेटा को परिवर्तित नहीं किया जा सकता है, तो यह null
लौटाएगा ।
उदाहरण के लिए, यह एक त्रुटि देता है:
SELECT 'Comments: ' + CAST(10.00 AS varchar(1)) AS Result;
परिणाम:
Error: Arithmetic overflow error converting numeric to data type varchar.
लेकिन अगर हम TRY_CAST()
. का उपयोग करते हैं इसके बजाय, हमें null
मिलता है :
SELECT 'Comments: ' + TRY_CAST(10.00 AS varchar(1)) AS Result;
परिणाम:
Result ------ null