मारियाडीबी में, UNCOMPRESSED_LENGTH()
एक अंतर्निहित फ़ंक्शन है जो COMPRESS()
के साथ संपीड़ित होने से पहले एक संपीड़ित स्ट्रिंग की लंबाई लौटाता है समारोह।
सिंटैक्स
वाक्य रचना इस प्रकार है:
UNCOMPRESSED_LENGTH(compressed_string)
जहां compressed_string
संकुचित स्ट्रिंग है।
उदाहरण
यहां एक बुनियादी उदाहरण दिया गया है:
SELECT UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('z', 50)));
परिणाम:
+------------------------------------------------+ | UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('z', 50))) | +------------------------------------------------+ | 50 | +------------------------------------------------+
यहाँ, मैंने REPEAT()
. का उपयोग किया है एक ही अक्षर को 50 बार दोहराने का कार्य। चरित्र को दोहराने से यह संपीड़न के लिए एक अच्छा उम्मीदवार बन जाता है।
संपीड़ित स्ट्रिंग की तुलना में
संपीड़ित स्ट्रिंग की तुलना में यह फिर से है:
SELECT
LENGTH(COMPRESS(REPEAT('z', 50))) AS "Compressed",
UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('z', 50))) AS "Uncompressed";
परिणाम:
+------------+--------------+ | Compressed | Uncompressed | +------------+--------------+ | 16 | 50 | +------------+--------------+
बाइट लंबाई बनाम वर्ण लंबाई
UNCOMPRESSED_LENGTH()
बाइट्स . में लंबाई पर रिपोर्ट (सिर्फ वर्ण की लंबाई के विपरीत)।
हम एक बहु-बाइट वर्ण का उपयोग करके इसका परीक्षण कर सकते हैं, जैसे कि कॉपीराइट प्रतीक (©
), फिर इसे LENGTH()
. जैसे कार्यों में पास करना बाइट्स में लंबाई प्राप्त करने के लिए, और CHAR_LENGTH()
वर्ण लंबाई प्राप्त करने के लिए:
SELECT
UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('©', 50))) AS "UNCOMPRESSED_LENGTH()",
LENGTH(REPEAT('©', 50)) AS "Uncompressed (Bytes)",
LENGTH(COMPRESS(REPEAT('©', 50))) AS "Compressed (Bytes)",
CHAR_LENGTH(REPEAT('©', 50)) AS "Uncompressed (Char)",
CHAR_LENGTH(COMPRESS(REPEAT('©', 50))) AS "Compressed (Char)";
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
UNCOMPRESSED_LENGTH(): 100 Uncompressed (Bytes): 100 Compressed (Bytes): 17 Uncompressed (Char): 50 Compressed (Char): 17
यहां एक और उदाहरण दिया गया है जो थाई वर्ण का उपयोग करता है:
SELECT
UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('อ', 50))) AS "UNCOMPRESSED_LENGTH()",
LENGTH(REPEAT('อ', 50)) AS "Uncompressed (Bytes)",
LENGTH(COMPRESS(REPEAT('อ', 50))) AS "Compressed (Bytes)",
CHAR_LENGTH(REPEAT('อ', 50)) AS "Uncompressed (Char)",
CHAR_LENGTH(COMPRESS(REPEAT('อ', 50))) AS "Compressed (Char)";
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
UNCOMPRESSED_LENGTH(): 150 Uncompressed (Bytes): 150 Compressed (Bytes): 18 Uncompressed (Char): 50 Compressed (Char): 18
यह थाई वर्ण 3 बाइट्स का उपयोग करता है, और इसलिए हम असम्पीडित स्ट्रिंग के लिए 150 बाइट्स के साथ समाप्त होते हैं, भले ही स्ट्रिंग केवल 50 वर्ण लंबी हो।
अशक्त तर्क
पासिंग null
रिटर्न null
:
SELECT UNCOMPRESSED_LENGTH(null);
परिणाम:
+---------------------------+ | UNCOMPRESSED_LENGTH(null) | +---------------------------+ | NULL | +---------------------------+
अनुपलब्ध तर्क
कॉल करना UNCOMPRESSED_LENGTH()
तर्कों की गलत संख्या के साथ, या बिना कोई तर्क पारित किए त्रुटि उत्पन्न होती है:
SELECT UNCOMPRESSED_LENGTH();
परिणाम:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UNCOMPRESSED_LENGTH'