Oracle में, LENGTH()
फ़ंक्शन अपने तर्क की लंबाई लौटाता है।
LENGTH()
कार्यों के समूह के रूप में भी सोचा जा सकता है। पाँच अलग-अलग कार्य हैं; LENGTH()
, LENGTHB()
, LENGTHC()
, LENGTH2()
, और LENGTH4()
. प्रत्येक फ़ंक्शन लंबाई की गणना अलग तरीके से करता है।
सिंटैक्स
वाक्य रचना इस प्रकार है:
{ LENGTH
| LENGTHB
| LENGTHC
| LENGTH2
| LENGTH4
}
(char)
फ़ंक्शन लंबाई की गणना इस प्रकार करते हैं:
कार्य | उपयोग करके लंबाई की गणना करता है… |
---|---|
LENGTH() | इनपुट वर्ण सेट द्वारा परिभाषित वर्ण, स्ट्रिंग के पहले वर्ण के साथ स्थिति 1 है। |
LENGTHB() | बाइट्स |
LENGTHC() | यूनिकोड पूर्ण वर्ण |
LENGTH2() | UCS2 कोड अंक |
LENGTH4() | UCS4 कोड अंक |
तर्क प्रकार इस प्रकार हो सकता है:
LENGTH()
का उपयोग करते समय औरLENGTHB()
सिंटैक्स, तर्क कोई भी डेटा प्रकार हो सकता हैCHAR
,VARCHAR2
,NCHAR
,NVARCHAR2
,CLOB
, याNCLOB
.LENGTHC()
का उपयोग करते समय ,LENGTH2()
औरLENGTH4()
सिंटैक्स, तर्क कोई भी डेटा प्रकार हो सकता हैCHAR
,VARCHAR2
,NCHAR
,NVARCHAR2
(लेकिन नहींCLOB
याNCLOB
)।
उदाहरण
यहां एक बुनियादी उदाहरण दिया गया है:
SELECT LENGTH('Big fat cat')
FROM DUAL;
परिणाम:
11
की तुलना में LENGTHB()
यह उदाहरण दिखाता है कि आप किस विशिष्ट फ़ंक्शन का उपयोग कर रहे हैं, और इसमें शामिल वर्ण सेट के आधार पर परिणाम कैसे भिन्न हो सकते हैं।
इस मामले में, हम तुलना करते हैं LENGTH()
LENGTHB()
. के साथ :
SELECT
LENGTH('Böyük yağlı pişik') AS LENGTH,
LENGTHB('Böyük yağlı pişik') AS LENGTHB
FROM DUAL;
परिणाम:
LENGTH LENGTHB _________ __________ 17 22
हम देख सकते हैं कि दो कार्यों ने दो अलग-अलग परिणाम दिए। ऐसा इसलिए है क्योंकि इस स्ट्रिंग में कुछ वर्ण दो बाइट्स का उपयोग करते हैं।
LENGTH()
फ़ंक्शन इनपुट वर्ण सेट द्वारा परिभाषित वर्णों में लंबाई देता है, जबकि LENGTHB()
फ़ंक्शन लंबाई को बाइट्स . में लौटाता है ।
यदि हम मूल स्ट्रिंग पर लौटते हैं, तो परिणाम दो कार्यों के बीच समान होते हैं:
SELECT
LENGTH('Big fat cat') AS LENGTH,
LENGTHB('Big fat cat') AS LENGTHB
FROM DUAL;
परिणाम:
LENGTH LENGTHB _________ __________ 11 11
यह स्ट्रिंग प्रति वर्ण केवल एक बाइट का उपयोग करती है, और इसलिए बाइट्स में लंबाई वर्णों की संख्या के समान होती है।
शून्य तर्क
यदि तर्क null
है , परिणाम null
. है :
SET NULL 'null';
SELECT
LENGTH(null) AS LENGTH,
LENGTHB(null) AS LENGTHB,
LENGTHC(null) AS LENGTHC,
LENGTH2(null) AS LENGTH2,
LENGTH4(null) AS LENGTH4
FROM DUAL;
परिणाम:
LENGTH LENGTHB LENGTHC LENGTH2 LENGTH4 _________ __________ __________ __________ __________ null null null null null
डिफ़ॉल्ट रूप से, SQLcl और SQL*Plus जब भी null
. खाली स्थान लौटाते हैं SQL SELECT
. के परिणामस्वरूप होता है बयान।
हालांकि, आप SET NULL
. का उपयोग कर सकते हैं वापस करने के लिए एक अलग स्ट्रिंग निर्दिष्ट करने के लिए। यहाँ मैंने निर्दिष्ट किया है कि स्ट्रिंग null
लौटाया जाना चाहिए।
गलत तर्क गणना
कोई तर्क पारित किए बिना फ़ंक्शन को कॉल करने से त्रुटि होती है:
SELECT LENGTH()
FROM DUAL;
परिणाम:
Error starting at line : 1 in command - SELECT LENGTH() 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:
और बहुत अधिक तर्क देने से भी त्रुटि होती है:
SELECT LENGTH('Big fat cat', 'oops')
FROM DUAL;
परिणाम:
Error starting at line : 1 in command - SELECT LENGTH('Big fat cat', 'oops') 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: