मारियाडीबी में, LENGTH()
एक अंतर्निहित स्ट्रिंग फ़ंक्शन है जो दिए गए स्ट्रिंग तर्क की लंबाई देता है।
जब डिफ़ॉल्ट मोड में, स्ट्रिंग की लंबाई बाइट्स में मापी जाती है। लेकिन जब Oracle मोड में होता है, तो इसे वर्णों में मापा जाता है।
सिंटैक्स
वाक्य रचना इस प्रकार है:
LENGTH(str)
जहां str
वह स्ट्रिंग है जिसके लिए लंबाई लौटा दी जाएगी।
उदाहरण
यहां एक बुनियादी उदाहरण दिया गया है:
SELECT LENGTH('café');
परिणाम:
+-----------------+ | LENGTH('café') | +-----------------+ | 5 | +-----------------+
इस मामले में, स्ट्रिंग चार वर्ण लंबी थी, लेकिन LENGTH()
लौटा 5
।
ऐसा इसलिए है क्योंकि अंतिम वर्ण दो बाइट्स का उपयोग करता है, और मैं डिफ़ॉल्ट SQL मोड का उपयोग कर रहा हूं (मेरा sql_mode=DEFAULT
) डिफ़ॉल्ट SQL मोड में होने पर, LENGTH()
बाइट्स की संख्या लौटाता है।
Oracle मोड
Oracle मोड में स्विच करने से LENGTH()
का परिणाम मिलता है स्ट्रिंग में केवल वर्णों की संख्या लौटाता है (बाइट्स की संख्या के विपरीत)।
आइए अपने सत्र को Oracle मोड में बदलें:
SET SESSION sql_mode='ORACLE';
और अब पिछले LENGTH()
को चलाते हैं उदाहरण फिर से:
SELECT LENGTH('café');
परिणाम:
+-----------------+ | LENGTH('café') | +-----------------+ | 4 | +-----------------+
इस बार यह बाइट्स की संख्या (5) के बजाय वर्णों की संख्या (4) देता है।
Oracle मोड में होने पर, LENGTH()
CHAR_LENGTH()
as जैसा ही परिणाम देता है और इसका पर्यायवाची, CHARACTER_LENGTH()
।
CHAR_LENGTH()
से तुलना करें और BIT_LENGTH()
आइए डिफ़ॉल्ट मोड पर वापस जाएं:
SET SESSION sql_mode=DEFAULT;
यहां LENGTH()
. के बीच एक त्वरित तुलना की गई है डिफ़ॉल्ट मोड में होने पर, CHAR_LENGTH()
और BIT_LENGTH()
जो एक स्ट्रिंग में बिट्स की संख्या लौटाता है:
SELECT
LENGTH('อ'),
CHAR_LENGTH('อ'),
BIT_LENGTH('อ');
परिणाम:
+---------------+--------------------+-------------------+ | LENGTH('อ') | CHAR_LENGTH('อ') | BIT_LENGTH('อ') | +---------------+--------------------+-------------------+ | 3 | 1 | 24 | +---------------+--------------------+-------------------+
यह थाई वर्ण (อ
) 3 बाइट्स का उपयोग करता है, और इसलिए LENGTH()
रिटर्न 3
.
CHAR_LENGTH()
रिटर्न 1
, क्योंकि यह अभी भी केवल एक वर्ण है, और BIT_LENGTH()
बिट्स की संख्या लौटाता है (24
)।
फिर से, अगर हम Oracle मोड में होते, LENGTH()
CHAR_LENGTH()
. के समान लौटा होता ।
गैर-स्ट्रिंग
यदि तर्क एक स्ट्रिंग नहीं है, तो इसे एक स्ट्रिंग में बदल दिया जाता है।
यहां एक और उदाहरण दिया गया है जो किसी संख्या का उपयोग करता है:
SELECT LENGTH(1234);
परिणाम:
+--------------+ | LENGTH(1234) | +--------------+ | 4 | +--------------+
अशक्त तर्क
पासिंग null
रिटर्न null
:
SELECT LENGTH(null);
परिणाम:
+--------------+ | LENGTH(null) | +--------------+ | NULL | +--------------+
अनुपलब्ध तर्क
कॉलिंग LENGTH()
तर्क पारित किए बिना त्रुटि होती है:
SELECT LENGTH();
परिणाम:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LENGTH'