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

Oracle में REPLACE () फ़ंक्शन

Oracle में, REPLACE() फ़ंक्शन आपको स्ट्रिंग के एक भाग को दूसरी स्ट्रिंग से बदलने की अनुमति देता है।

फ़ंक्शन तीन तर्कों को स्वीकार करता है:स्ट्रिंग, प्रतिस्थापित करने के लिए सबस्ट्रिंग, और प्रतिस्थापन स्ट्रिंग (सबस्ट्रिंग को प्रतिस्थापित करने के लिए)।

आप प्रतिस्थापन स्ट्रिंग को छोड़ सकते हैं, इस स्थिति में, फ़ंक्शन सबस्ट्रिंग के सभी इंस्टेंस को हटा देगा।

सिंटैक्स

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

REPLACE(char, search_string
        [, replacement_string ]
       )

जहां char स्ट्रिंग है, search_string प्रतिस्थापित करने के लिए सबस्ट्रिंग है, और replacement_string उस सबस्ट्रिंग को प्रतिस्थापित करने के लिए स्ट्रिंग है।

उदाहरण

यहां एक बुनियादी उदाहरण दिया गया है:

SELECT 
    REPLACE('Barrier Island', 'Island', 'Reef')
FROM DUAL;

परिणाम:

Barrier Reef

इस मामले में हमने सबस्ट्रिंग Island . को बदल दिया है Reef के साथ ।

एकाधिक मिलान

यदि प्रतिस्थापित किया जाने वाला स्ट्रिंग स्ट्रिंग के भीतर कई बार होता है, तो सभी आवृत्तियों को बदल दिया जाता है:

SELECT 
    REPLACE('Black dogs and white dogs', 'dog', 'cat')
FROM DUAL;

परिणाम:

Black cats and white cats

कोई मिलान नहीं

यदि स्ट्रिंग में सबस्ट्रिंग नहीं होता है, तो REPLACE() स्ट्रिंग को अपरिवर्तित लौटाता है:

SELECT 
    REPLACE('Barrier Island', 'to entry', 'Reef')
FROM DUAL;

परिणाम:

Barrier Island

सबस्ट्रिंग निकालें

तीसरे तर्क को छोड़ देने से स्ट्रिंग से सबस्ट्रिंग हट जाती है:

SELECT 
    REPLACE('Black dogs and white dogs', ' dogs')
FROM DUAL;

परिणाम:

Black  and white 

यदि आप बारीकी से देखें, तो आप देखेंगे कि रिक्तियां अभी भी बनी हुई हैं, क्योंकि हमने सबस्ट्रिंग में कोई स्थान निर्दिष्ट नहीं किया है।

यहाँ यह फिर से शामिल स्थान के साथ है:

SELECT 
    REPLACE('Black dogs and white dogs', ' dogs')
FROM DUAL;

परिणाम:

Black and white

केस संवेदनशीलता

REPLACE() फ़ंक्शन केस-संवेदी मिलान करता है:

SELECT 
    REPLACE('Barrier Island', 'island', 'reef')
FROM DUAL;

परिणाम:

Barrier Island

इस उदाहरण में, मामला मेल नहीं खाता, और इसलिए मूल स्ट्रिंग को अपरिवर्तित लौटा दिया गया।

खाली स्ट्रिंग्स

यहाँ क्या होता है जब प्रत्येक दिए गए तर्क के लिए एक खाली स्ट्रिंग पास की जाती है:

SELECT 
    REPLACE('', 'dog', 'cat') AS "1",
    REPLACE('Black dog', '', 'cat') AS "2",
    REPLACE('Black dog', 'dog', '') AS "3"
FROM DUAL;

परिणाम:

   1            2         3 
____ ____________ _________ 
     Black dog    Black    

तो इस मामले में:

  • आरंभिक स्ट्रिंग के लिए एक खाली स्ट्रिंग पास करने से एक खाली स्ट्रिंग वापस आती है।
  • दूसरे तर्क के लिए एक खाली स्ट्रिंग पास करने से मूल स्ट्रिंग वापस आ जाती है।
  • तीसरे आर्ग्युमेंट के लिए एक खाली स्ट्रिंग पास करने से वह स्ट्रिंग हट जाती है जिसे स्ट्रिंग से बदला जाना है।

स्पेस कैरेक्टर

एक खाली स्ट्रिंग स्पेस कैरेक्टर के समान नहीं है।

यहां बताया गया है कि जब हम खाली स्ट्रिंग को स्पेस में बदलते हैं तो क्या होता है:

SELECT 
    REPLACE(' ', 'dog', 'cat') AS "1",
    REPLACE('Black dog', ' ', 'cat') AS "2",
    REPLACE('Black dog', 'dog', ' ') AS "3"
FROM DUAL;

परिणाम:

   1              2          3 
____ ______________ __________ 
     Blackcatdog    Black     

इसलिए, अगर स्ट्रिंग एक स्पेस के अलावा और कुछ नहीं है, तो हम उसे दूसरी स्ट्रिंग से बदल सकते हैं:

SELECT REPLACE(' ', ' ', 'cat')
FROM DUAL;

परिणाम:

cat

अशक्त तर्क

पासिंग null प्रत्येक तर्क के लिए एक खाली स्ट्रिंग पास करने की तरह काम करता है:

SET NULL 'null';
SELECT 
    REPLACE(null, 'dog', 'cat') AS "1",
    REPLACE('Black dog', null, 'cat') AS "2",
    REPLACE('Black dog', 'dog', null) AS "3"
FROM DUAL;

परिणाम:

      1            2         3 
_______ ____________ _________ 
null    Black dog    Black    

डिफ़ॉल्ट रूप से, SQLcl और SQL*Plus जब भी null . खाली स्थान लौटाते हैं SQL SELECT . के परिणामस्वरूप होता है बयान।

हालांकि, आप SET NULL . का उपयोग कर सकते हैं वापस करने के लिए एक अलग स्ट्रिंग निर्दिष्ट करने के लिए। यहाँ मैंने निर्दिष्ट किया है कि स्ट्रिंग null लौटाया जाना चाहिए।

अनुपलब्ध तर्क

कॉलिंग REPLACE() कोई तर्क पारित किए बिना त्रुटि उत्पन्न होती है:

SELECT REPLACE()
FROM DUAL;

परिणाम:

Error starting at line : 1 in command -
SELECT REPLACE()
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 REPLACE('Cat', 'a', 'b', 'c')
FROM DUAL;

परिणाम:

Error starting at line : 1 in command -
SELECT REPLACE('Cat', 'a', 'b', 'c')
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00939: too many arguments for function
00939. 00000 -  "too many arguments for function"
*Cause:    
*Action:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle में दशमलव के बिना संख्या को प्रारूपित करने के 4 तरीके

  2. अमान्य Oracle URL निर्दिष्ट:OracleDataSource.makeURL

  3. CLOB पर SUBSTR का प्रदर्शन

  4. क्लोन ORACLE_HOME

  5. Oracle में एकाधिक प्रतिस्थापन फ़ंक्शन