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: