Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL लंबाई () बनाम char_length ()

MySQL में, कई बार length() फ़ंक्शन और char_length() फ़ंक्शन बिल्कुल वही परिणाम प्रदान करेगा। हालांकि, ऐसे समय भी होते हैं जहां परिणाम पूरी तरह से अलग होंगे। यही कारण है।

सबसे पहले, इनमें से प्रत्येक फ़ंक्शन की परिभाषा यहां दी गई है:

char_length()
वर्णों में मापी गई स्ट्रिंग की लंबाई लौटाता है।
length()
बाइट्स में मापी गई स्ट्रिंग की लंबाई देता है।

नोटिस "वर्ण" बनाम "बाइट्स" - एक को वर्णों . में मापा जाता है , दूसरे को बाइट्स . में मापा जाता है ।

कई मामलों में, बाइट्स की संख्या स्ट्रिंग में वर्णों की संख्या के समान होगी, लेकिन हमेशा ऐसा नहीं होता है। प्रति वर्ण उपयोग किए जाने वाले बाइट्स की संख्या इस बात पर निर्भर करती है कि डेटा कैसे संग्रहीत किया जाता है। उदाहरण के लिए, यदि स्ट्रिंग को यूनिकोड डेटा के रूप में संग्रहीत किया जाता है, तो प्रति वर्ण 2 बाइट्स होंगे।

यहां ASCII टेक्स्ट का उपयोग करके एक मूल उदाहरण दिया गया है (जहां दोनों फ़ंक्शन समान परिणाम देते हैं):

SELECT 
    CHAR_LENGTH('Lit'), 
    LENGTH('Lit');

परिणाम:

+--------------------+---------------+
| CHAR_LENGTH('Lit') | LENGTH('Lit') |
+--------------------+---------------+
|                  3 |             3 |
+--------------------+---------------+

और अक्सर हम वही परिणाम प्राप्त करेंगे यदि स्ट्रिंग को डेटाबेस में संग्रहीत किया जाता है:

SELECT 
    CHAR_LENGTH(ArtistName),
    LENGTH(ArtistName)    
FROM Artists
WHERE ArtistName = 'Lit';

परिणाम:

+-------------------------+--------------------+
| CHAR_LENGTH(ArtistName) | LENGTH(ArtistName) |
+-------------------------+--------------------+
|                       3 |                  3 |
+-------------------------+--------------------+

हालाँकि, यदि हम डेटा को यूनिकोड के रूप में संग्रहीत करने के लिए डेटाबेस कॉलम को बदलते हैं:

ALTER TABLE Artists 
MODIFY COLUMN ArtistName VARCHAR(255) unicode;

और फिर वही क्वेरी फिर से चलाएँ:

SELECT 
    CHAR_LENGTH(ArtistName),
    LENGTH(ArtistName)    
FROM Artists
WHERE ArtistName = 'Lit';

हमें एक अलग परिणाम मिलता है:

+-------------------------+--------------------+
| CHAR_LENGTH(ArtistName) | LENGTH(ArtistName) |
+-------------------------+--------------------+
|                       3 |                  6 |
+-------------------------+--------------------+

ऐसा इसलिए है क्योंकि यूनिकोड प्रत्येक वर्ण को 2 बाइट्स के रूप में संग्रहीत करता है।

यह datalength() . के बीच के अंतर के समान है और len() टी-एसक्यूएल में।

MySQL में octet_length() भी है फ़ंक्शन, जो length() . का पर्याय है ।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में टेबल कॉपी कैसे करें

  2. एक MySQL डेटाबेस में सभी तालिकाओं को एक कमांड में छोटा करें?

  3. Laravel में इसे कैसे करें, सबक्वेरी जहां in

  4. समस्या निवारण Mysql में कॉलेशन त्रुटि का अवैध मिश्रण

  5. MySQL में एक टेबल का आकार कैसे प्राप्त करें