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

सबस्ट्र () Oracle में फंक्शन

Oracle में, SUBSTR() फ़ंक्शन किसी दिए गए स्ट्रिंग से एक सबस्ट्रिंग देता है।

SUBSTR() कम से कम दो तर्कों की आवश्यकता है; स्ट्रिंग, और वह स्थिति जिसके लिए सबस्ट्रिंग को निकालना है। यह एक वैकल्पिक तीसरे तर्क को भी स्वीकार करता है जो आपको यह निर्दिष्ट करने की अनुमति देता है कि सबस्ट्रिंग कितनी लंबी होनी चाहिए।

SUBSTR() कार्यों के समूह के रूप में भी सोचा जा सकता है। पाँच अलग-अलग कार्य हैं; SUBSTR() , SUBSTRB() , SUBSTRC() , SUBSTR2() , और SUBSTR4() . प्रत्येक फ़ंक्शन लंबाई की गणना अलग तरीके से करता है।

सिंटैक्स

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

{ SUBSTR
| SUBSTRB
| SUBSTRC
| SUBSTR2
| SUBSTR4
}
(char, position [, substring_length ])

जहां char स्ट्रिंग है, position सबस्ट्रिंग की शुरुआती स्थिति है, और substring_length निकालने के लिए वर्णों की लंबाई है।

फ़ंक्शन लंबाई की गणना इस प्रकार करते हैं:

कार्य उपयोग करके लंबाई की गणना करता है…
SUBSTR() इनपुट वर्ण सेट द्वारा परिभाषित वर्ण
SUBSTRB() बाइट्स
SUBSTRC() यूनिकोड पूर्ण वर्ण
SUBSTR2() UCS2 कोड अंक
SUBSTR4() UCS4 कोड अंक

उदाहरण

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

SELECT SUBSTR('Big fat cat', 5)
FROM DUAL;

परिणाम:

fat cat

की तुलना में SUBSTRB()

यह उदाहरण दिखाता है कि आप किस विशिष्ट फ़ंक्शन का उपयोग कर रहे हैं, और इसमें शामिल वर्ण सेट के आधार पर परिणाम कैसे भिन्न हो सकते हैं।

इस मामले में, हम तुलना करते हैं SUBSTR() SUBSTRB() . के साथ :

SELECT 
    SUBSTR('Böyük yağlı pişik', 5) AS SUBSTR,
    SUBSTRB('Böyük yağlı pişik', 5) AS SUBSTRB
FROM DUAL;

परिणाम:

          SUBSTR           SUBSTRB 
________________ _________________ 
k yağlı pişik    ük yağlı pişik   

हम देख सकते हैं कि दो कार्यों ने दो अलग-अलग परिणाम दिए। ऐसा इसलिए है क्योंकि इस स्ट्रिंग में कुछ वर्ण दो बाइट्स का उपयोग करते हैं।

SUBSTR() फ़ंक्शन इनपुट कैरेक्टर सेट द्वारा परिभाषित characters में लंबाई लौटाता है, जबकि SUBSTRB() फ़ंक्शन लंबाई को बाइट्स . में लौटाता है ।

यदि हम मूल स्ट्रिंग पर लौटते हैं, तो परिणाम दो कार्यों के बीच समान होते हैं:

SELECT 
    SUBSTR('Big fat cat', 5) AS SUBSTR,
    SUBSTRB('Big fat cat', 5) AS SUBSTRB
FROM DUAL;

परिणाम:

    SUBSTR    SUBSTRB 
__________ __________ 
fat cat    fat cat   

ऐसा इसलिए है क्योंकि यह स्ट्रिंग प्रति वर्ण केवल एक बाइट का उपयोग करती है, और इसलिए बाइट्स में लंबाई वर्णों की संख्या के समान होती है।

सबस्ट्रिंग लंबाई

यहां एक उदाहरण दिया गया है जो निकालने के लिए सबस्ट्रिंग की लंबाई निर्दिष्ट करता है:

SELECT SUBSTR('Big fat cat', 5, 3)
FROM DUAL;

परिणाम:

fat

और यहां SUBSTR() के बीच तुलना है और SUBSTRB() बहु-बाइट वर्णों पर लंबाई निर्दिष्ट करते समय:

SELECT 
    SUBSTR('Böyük yağlı pişik', 5, 9) AS SUBSTR,
    SUBSTRB('Böyük yağlı pişik', 5, 9) AS SUBSTRB
FROM DUAL;

परिणाम:

      SUBSTR    SUBSTRB 
____________ __________ 
k yağlı p    ük yağl    

शून्य स्थिति

इस फ़ंक्शन की एक विशेषता यह है कि, 0 . की स्थिति को पास करना 1 . पास करने जैसा ही परिणाम देता है :

SELECT 
    SUBSTR('Big fat cat', 0, 3) AS "0",
    SUBSTR('Big fat cat', 1, 3) AS "1"
FROM DUAL;

परिणाम:

     0      1 
______ ______ 
Big    Big   

नकारात्मक स्थिति

स्थिति के लिए ऋणात्मक मान निर्दिष्ट करने से प्रारंभिक स्थिति को स्ट्रिंग के अंत से पीछे की ओर गिना जाता है:

SELECT SUBSTR('Big fat cat', -3)
FROM DUAL;

परिणाम:

cat

और निर्दिष्ट की गई किसी भी लंबाई को उस स्थिति से आगे गिना जाता है:

SELECT SUBSTR('Big fat cat', -7, 3)
FROM DUAL;

परिणाम:

fat

अशक्त तर्क

यदि कोई (या सभी) तर्क null . हैं , परिणाम null . है :

SET NULL 'null';
SELECT 
    SUBSTR(null, 3, 3) AS r1,
    SUBSTR('Coffee', null, 3) AS r2,
    SUBSTR('Coffee', 3, null) AS r3,
    SUBSTR(null, null, null) AS r4
FROM DUAL;

परिणाम:

     R1      R2      R3      R4 
_______ _______ _______ _______ 
null    null    null    null   

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

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

गलत तर्क गणना

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

SELECT SUBSTR()
FROM DUAL;

परिणाम:

Error starting at line : 1 in command -
SELECT SUBSTR()
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 SUBSTR('Big fat cat', 3, 2, 1)
FROM DUAL;

परिणाम:

Error starting at line : 1 in command -
SELECT SUBSTR('Big fat cat', 3, 2, 1)
FROM DUAL
Error at Command Line : 1 Column : 36
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. JDBC खाली परिणाम सेट लौटा रहा है

  2. एक दृश्य में एक अशक्त स्तंभ कैसे बनाएं?

  3. केवल एक नई तालिका बनाए जाने पर चलने के लिए ट्रिगर बनाना

  4. Oracle IF कंडीशन उदाहरण

  5. अपने Oracle सत्र के लिए भाषा कैसे बदलें