SQL सर्वर में, REPLACE()
फ़ंक्शन हमें एक स्ट्रिंग को दूसरी स्ट्रिंग से बदलने में सक्षम बनाता है। लेकिन क्या होगा यदि आप पात्रों की सूची को अन्य पात्रों की सूची से बदलना चाहते हैं?
TRANSLATE()
समारोह मदद कर सकता है।
यहाँ Microsoft की TRANSLATE()
की व्याख्या दी गई है समारोह:
दूसरे तर्क में निर्दिष्ट कुछ वर्णों के तीसरे तर्क में निर्दिष्ट वर्णों के गंतव्य सेट में अनुवाद किए जाने के बाद पहले तर्क के रूप में प्रदान की गई स्ट्रिंग लौटाता है।
कीचड़ की तरह साफ?
उदाहरण
मुझे लगता है कि यह उन समयों में से एक है जो वास्तव में एक उदाहरण के लिए चिल्लाता है।
SELECT TRANSLATE('Fred [10 points]', '[]', '()');
परिणाम:
Fred (10 points)
मूल रूप से, ऐसा लगता है कि हमने मूल्यों की एक और सूची को बदलने के लिए मूल्यों की एक सूची प्रदान की है। लेकिन प्रत्येक सूची आइटम को विभाजक से अलग करने की कोई आवश्यकता नहीं है।
वर्णों की समान संख्या
दूसरे और तीसरे तर्क में समान संख्या में वर्ण होने चाहिए।
दूसरे शब्दों में, आप ऐसा नहीं कर सकते:
SELECT TRANSLATE('Fred [10 points]', '[]', '(');
परिणाम:
Msg 9828, Level 16, State 1, Line 1 The second and third arguments of the TRANSLATE built-in function must contain an equal number of characters.
इस मामले में दूसरे तर्क में दो वर्ण होते हैं लेकिन तीसरे तर्क में सिर्फ एक होता है, इसलिए हमें एक त्रुटि मिलती है।
ऐसा इसलिए होता है क्योंकि SQL सर्वर को यह जानने की आवश्यकता होती है कि दूसरे तर्क के दूसरे वर्ण को बदलने के लिए कौन सा वर्ण है। यह प्रत्येक वर्ण के माध्यम से एक-एक करके जाता है, इसे तीसरे तर्क से संबंधित वर्ण के साथ बदल देता है। यदि कोई मौजूद नहीं है, तो उसके पास एक त्रुटि फेंकने के अलावा कोई विकल्प नहीं है।
की तुलना में REPLACE()
यहां एक उदाहरण दिया गया है जो TRANSLATE()
. के बीच के अंतर को दर्शाता है और REPLACE()
।
SELECT
REPLACE('[] [hey]', '[]', '()') AS REPLACE,
TRANSLATE('[] [hey]', '[]', '()') AS TRANSLATE;
परिणाम:
+-----------+-------------+ | REPLACE | TRANSLATE | |-----------+-------------| | () [hey] | () (hey) | +-----------+-------------+
REPLACE()
फ़ंक्शन छोड़ देता है [hey]
बिल्कुल वैसा ही है, क्योंकि दूसरे तर्क में वह पूरी स्ट्रिंग प्रदान नहीं की गई थी। यह फ़ंक्शन केवल तभी मिलान ढूंढता है जब पूरी स्ट्रिंग मौजूद हो।
TRANSLATE()
दूसरी ओर फ़ंक्शन [hey]
. को प्रतिस्थापित करता है (hey)
. के साथ क्योंकि यह प्रत्येक चरित्र . को प्रतिस्थापित करता है एक के बाद एक। यह बदलने के लिए एक पूरी स्ट्रिंग की तलाश नहीं कर रहा है, यह केवल प्रत्येक व्यक्तिगत चरित्र को अलग-अलग ढूंढ रहा है।