MySQL में, OCTET_LENGTH()
फ़ंक्शन बाइट्स में मापी गई स्ट्रिंग की लंबाई देता है।
यह फ़ंक्शन वास्तव में LENGTH()
. का पर्याय है ।
सिंटैक्स
मूल वाक्य रचना इस प्रकार है:
OCTET_LENGTH(str)
जहां str
वह स्ट्रिंग है जिसके लिए आप लंबाई वापस करना चाहते हैं।
उदाहरण
SELECT OCTET_LENGTH('Cat');
परिणाम:
+---------------------+ | OCTET_LENGTH('Cat') | +---------------------+ | 3 | +---------------------+
यह वही परिणाम है जो हमें CHAR_LENGTH()
. का उपयोग करने पर मिलता है समारोह। हालांकि, OCTET_LENGTH()
फ़ंक्शन डेटा प्रकार के आधार पर अलग-अलग परिणाम दे सकता है।
डेटा प्रकार
जब आप किसी डेटाबेस को क्वेरी करते हैं, तो OCTET_LENGTH()
फ़ंक्शन डेटा प्रकार के आधार पर एक अलग परिणाम लौटा सकता है। यूनिकोड स्ट्रिंग्स बाइट्स की संख्या को दोगुना कर देती हैं। UTF-8 के तार अलग-अलग हो सकते हैं।
यहाँ UTF-8 का उपयोग करने का एक उदाहरण दिया गया है:
SELECT CHAR_LENGTH(_utf8 '€'), OCTET_LENGTH(_utf8 '€');
परिणाम:
+--------------------------+---------------------------+ | CHAR_LENGTH(_utf8 '€') | OCTET_LENGTH(_utf8 '€') | +--------------------------+---------------------------+ | 1 | 3 | +--------------------------+---------------------------+
इस मामले में, वर्ण की लंबाई 1 है, लेकिन ऑक्टेट की लंबाई 3 बाइट्स है।
निम्नलिखित उदाहरण में, हम एक डेटाबेस को क्वेरी करते हैं। इस मामले में, ArtistName
कॉलम varchar(255) . का उपयोग करता है डेटा प्रकार:
SELECT OCTET_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
तो परिणाम इस तरह दिखता है:
+--------------------------+ | OCTET_LENGTH(ArtistName) | +--------------------------+ | 3 | +--------------------------+
हालांकि, अगर हम कॉलम को ucs2
. में बदलते हैं , प्रत्येक वर्ण को 2 बाइट यूनिकोड कोड द्वारा दर्शाया जाएगा, और इसलिए परिणाम भिन्न होगा।
प्रदर्शित करने के लिए, हम तालिका को इस तरह बदल सकते हैं:
SELECT OCTET_LENGTH(ArtistName) ALTER TABLE Artists MODIFY COLUMN ArtistName VARCHAR(255) CHARSET ucs2;
अब अगर हम इसे फिर से पूछें:
SELECT OCTET_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
परिणाम:
+--------------------------+ | OCTET_LENGTH(ArtistName) | +--------------------------+ | 6 | +--------------------------+
पिछला रिक्त स्थान
OCTET_LENGTH()
फ़ंक्शन अनुगामी रिक्त स्थान (जैसे स्ट्रिंग के अंत में रिक्त स्थान) की गणना करता है। इसलिए यदि हम पहले उदाहरण के अंत में एक स्थान जोड़ते हैं, तो हमें निम्नलिखित परिणाम मिलते हैं:
SELECT LENGTH('Cat ');
परिणाम:
+----------------+ | LENGTH('Cat ') | +----------------+ | 4 | +----------------+
अग्रणी रिक्तियां
हमें प्रमुख रिक्त स्थान (जैसे स्ट्रिंग की शुरुआत में रिक्त स्थान) के साथ एक ही परिणाम मिलता है:
SELECT LENGTH('Cat ');
परिणाम:
+----------------+ | LENGTH('Cat ') | +----------------+ | 4 | +----------------+
बेशक, हम TRIM()
. जैसे फ़ंक्शन का उपयोग करते हैं , RTRIM()
, या LTRIM()
व्हाइटस्पेस को ट्रिम करने के लिए।
उदाहरण:
SELECT LENGTH(RTRIM('Cat '));
परिणाम:
+-----------------------+ | LENGTH(RTRIM('Cat ')) | +-----------------------+ | 3 | +-----------------------+
अधिक उदाहरण
यहां विभिन्न स्ट्रिंग्स के कुछ उदाहरण दिए गए हैं:
SELECT OCTET_LENGTH('Quiet Riot') AS 'Result 1', OCTET_LENGTH('') AS 'Result 2', OCTET_LENGTH('1234 7') AS 'Result 3', OCTET_LENGTH(' ') AS 'Result 4', OCTET_LENGTH(TRIM(' ')) AS 'Result 5';
परिणाम:
+----------+----------+----------+----------+----------+ | Result 1 | Result 2 | Result 3 | Result 4 | Result 5 | +----------+----------+----------+----------+----------+ | 10 | 0 | 7 | 3 | 0 | +----------+----------+----------+----------+----------+
ध्यान दें कि परिणाम 4 और 5 भिन्न हैं क्योंकि मैंने TRIM()
. का उपयोग किया है परिणाम 5 से व्हाइटस्पेस को ट्रिम करने के लिए कार्य करता है। यह देखते हुए कि स्ट्रिंग में केवल व्हाइटस्पेस होता है, ट्रिम की गई स्ट्रिंग की लंबाई 0
है। ।
Transact-SQL (SQL Server, Azure के लिए) का MySQL के LENGTH()
के समान कार्य है और OCTET_LENGTH()
काम करता है, लेकिन टी-एसक्यूएल में इसे DATALENGTH()
. कहा जाता है ।