Oracle में, TRANSLATE()
फ़ंक्शन आपको एक ऑपरेशन में कई एकल-वर्ण, एक-से-एक प्रतिस्थापन करने की अनुमति देता है।
दूसरे तर्क में निर्दिष्ट कुछ वर्णों को तीसरे तर्क में निर्दिष्ट वर्णों के गंतव्य सेट में अनुवादित करने के बाद यह पहले तर्क के रूप में प्रदान की गई स्ट्रिंग देता है।
यह REPLACE()
. के समान है फ़ंक्शन, सिवाय इसके कि REPLACE()
फ़ंक्शन पूरी स्ट्रिंग को दूसरी स्ट्रिंग से बदल देता है (अर्थात वर्ण द्वारा वर्ण नहीं, जैसे TRANSLATE()
करता है)।
सिंटैक्स
वाक्य रचना इस प्रकार है:
TRANSLATE(expr, from_string, to_string)
फ़ंक्शन expr
returns लौटाता है from_string
. में प्रत्येक वर्ण की सभी घटनाओं के साथ to_string
. में इसके संगत वर्ण द्वारा प्रतिस्थापित किया गया ।
उदाहरण
यहां एक बुनियादी उदाहरण दिया गया है:
SELECT
TRANSLATE('Cat', 'at', 'ow')
FROM DUAL;
परिणाम:
Cow
यहाँ, a
और t
वर्णों को o
. से बदल दिया गया और w
।
इस मामले में, REPLACE()
फ़ंक्शन एक ही परिणाम उत्पन्न करेगा। यहां दो कार्य साथ-साथ दिए गए हैं:
SELECT
TRANSLATE('Cat', 'at', 'ow') AS "TRANSLATE",
REPLACE('Cat', 'at', 'ow') AS "REPLACE"
FROM DUAL;
परिणाम:
TRANSLATE REPLACE ____________ __________ Cow Cow
इस मामले में, दोनों कार्यों का परिणाम समान है, लेकिन विभिन्न कारणों से।
यहां बताया गया है कि प्रत्येक फ़ंक्शन ने क्या किया:
TRANSLATE()
प्रतिस्थापितa
औरt
(प्रत्येक व्यक्तिगत चरित्र)REPLACE()
प्रतिस्थापितat
(स्ट्रिंग)
मिश्रित क्रम
यह उदाहरण दर्शाता है कि TRANSLATE()
REPLACE()
. से अलग है . इस उदाहरण में, मैं बदले जाने वाले वर्णों के क्रम को और साथ ही उन्हें बदलने के लिए वर्णों के क्रम को बदलता हूं:
SELECT
TRANSLATE('Cat', 'ta', 'wo') AS "TRANSLATE",
REPLACE('Cat', 'ta', 'wo') AS "REPLACE"
FROM DUAL;
परिणाम:
TRANSLATE REPLACE ____________ __________ Cow Cat
इस मामले में केवल TRANSLATE()
समारोह प्रभावी हुआ। ऐसा इसलिए है क्योंकि यह फ़ंक्शन एक-एक करके प्रत्येक वर्ण से गुजरता है। REPLACE()
दूसरी ओर, फ़ंक्शन पूरी स्ट्रिंग को ठीक उसी क्रम में ढूंढता है।
एक अधिक शक्तिशाली उदाहरण
यह उदाहरण एक ऐसे परिदृश्य को प्रदर्शित करता है जहां TRANSLATE()
फ़ंक्शन का REPLACE()
. पर एक महत्वपूर्ण लाभ है समारोह:
SELECT
TRANSLATE('2*[3+4]/{7-2}', '[]{}', '()()')
FROM DUAL;
परिणाम:
2*(3+4)/(7-2)
REPLACE()
. का उपयोग करके समान परिणाम प्राप्त करने के लिए फ़ंक्शन, हमें यह करने की आवश्यकता होगी:
SELECT
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
'2*[3+4]/{7-2}',
'[',
'('
),
']',
')'
),
'{',
'('
),
'}',
')'
)
FROM DUAL;
परिणाम:
2*(3+4)/(7-2)
उपरोक्त उदाहरण टी-एसक्यूएल TRANSLATE()
. के लिए माइक्रोसॉफ्ट दस्तावेज पर आधारित है फ़ंक्शन, जो Oracle संस्करण के समान है।
कोई मिलान नहीं
यदि कोई मिलान नहीं है, TRANSLATE()
स्ट्रिंग को अपरिवर्तित लौटाता है:
SELECT
TRANSLATE('Cat', 'x', 'y')
FROM DUAL;
परिणाम:
Cat
केस संवेदनशीलता
TRANSLATE()
फ़ंक्शन केस-संवेदी मिलान करता है:
SELECT
TRANSLATE('Cat', 'AT', 'ow')
FROM DUAL;
परिणाम:
Cat
इस उदाहरण में, मामला मेल नहीं खाता, और इसलिए मूल स्ट्रिंग को अपरिवर्तित लौटा दिया गया।
खाली स्ट्रिंग्स
यहाँ क्या होता है जब प्रत्येक दिए गए तर्क के लिए एक खाली स्ट्रिंग पास की जाती है:
SET NULL 'null';
SELECT
TRANSLATE('Cat', 'at', '') AS r1,
TRANSLATE('Cat', '', 'ow') AS r2,
TRANSLATE('', 'at', 'ow') AS r3
FROM DUAL;
परिणाम:
R1 R2 R3 _______ _______ _______ null null null
डिफ़ॉल्ट रूप से, SQLcl और SQL*Plus जब भी null
. खाली स्थान लौटाते हैं SQL SELECT
. के परिणामस्वरूप होता है बयान।
हालांकि, आप SET NULL
. का उपयोग कर सकते हैं वापस करने के लिए एक अलग स्ट्रिंग निर्दिष्ट करने के लिए। यहाँ मैंने निर्दिष्ट किया है कि स्ट्रिंग null
लौटाया जाना चाहिए।
स्पेस कैरेक्टर
खाली स्ट्रिंग स्पेस कैरेक्टर के समान नहीं है।
यहां बताया गया है कि जब हम खाली स्ट्रिंग को स्पेस में बदलते हैं तो क्या होता है:
SELECT
TRANSLATE('Cat', 'at', ' ') AS r1,
TRANSLATE('Cat', ' ', 'ow') AS r2,
TRANSLATE(' ', 'at', 'ow') AS r3
FROM DUAL;
परिणाम:
R1 R2 R3 _____ ______ _____ C Cat
यहां एक उदाहरण दिया गया है जो बताता है कि कैसे TRANSLATE()
और REPLACE()
स्पेस कैरेक्टर का उपयोग करते समय अलग-अलग परिणाम लौटाएं:
SELECT
TRANSLATE(' ', ' ', 'Cow') AS TRANSLATE,
REPLACE(' ', ' ', 'Cow') AS REPLACE
FROM DUAL;
परिणाम:
TRANSLATE REPLACE ____________ __________ C Cow
अशक्त तर्क
पासिंग null
किसी भी तर्क के लिए null
returns लौटाता है :
SET NULL 'null';
SELECT
TRANSLATE(null, 'dog', 'cat') AS "1",
TRANSLATE('Black dog', null, 'cat') AS "2",
TRANSLATE('Black dog', 'dog', null) AS "3"
FROM DUAL;
परिणाम:
1 2 3 _______ _______ _______ null null null
अनुपलब्ध तर्क
कॉलिंग TRANSLATE()
कोई तर्क पारित किए बिना त्रुटि उत्पन्न होती है:
SELECT TRANSLATE()
FROM DUAL;
परिणाम:
Error starting at line : 1 in command - SELECT TRANSLATE() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
बहुत अधिक तर्क
और बहुत से तर्कों को पारित करने से एक त्रुटि मिलती है:
SELECT TRANSLATE('Cat', 'a', 'b', 'c')
FROM DUAL;
परिणाम:
Error starting at line : 1 in command - SELECT TRANSLATE('Cat', 'a', 'b', 'c') FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action: