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