Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL LENGTH() और CHAR_LENGTH() फंक्शन में क्या अंतर है?


दोनों फंक्शन स्ट्रिंग फंक्शन हैं और स्ट्रिंग में मौजूद कैरेक्टर की संख्या लौटाते हैं। लेकिन वे इस अवधारणा में भिन्न हैं कि CHAR_LENGTH() फंक्शन स्ट्रिंग लंबाई को 'कैरेक्टर' में मापता है जबकि LENGTH() फंक्शन स्ट्रिंग लंबाई को 'बाइट्स' में मापता है। दूसरे शब्दों में, हम कह सकते हैं कि CHAR_LENGTH() फंक्शन मल्टी-बाइट सुरक्षित है यानी यह इस बात को नजरअंदाज करता है कि कैरेक्टर सिंगल-बाइट हैं या मल्टी-बाइट। उदाहरण के लिए, यदि एक स्ट्रिंग में चार 2-बाइट कैरेक्टर हैं तो LENGTH() फंक्शन 8 लौटाएगा, जबकि CHAR_LENGTH() फंक्शन 4 लौटाएगा। इस अर्थ में, हम कह सकते हैं कि CHAR_LENGTH() LENGTH() फंक्शन की तुलना में अधिक सटीक परिणाम देता है।

यह अंतर विशेष रूप से यूनिकोड के लिए प्रासंगिक है, जिसमें अधिकांश कैरेक्टर दो बाइट्स में एन्कोडेड होते हैं या UTF-8 के लिए जहां बाइट्स की संख्या भिन्न होती है। यह नीचे दिए गए उदाहरण में प्रदर्शित है:

उदाहरण

इस उदाहरण में, सबसे पहले स्ट्रिंग 'Gaurav' को ucs2 में परिवर्तित किया जाता है, जो यूनिकोड है और 2-बाइट कैरेक्टर रखता है, कैरेक्टर सेट। फिर हम परिणाम सेट से अंतर देख सकते हैं यानी LENGTH() बाइट्स की संख्या में लंबाई लौटाता है और CHAR_LENGTH() कैरेक्टर की संख्या में लंबाई लौटाता है।

mysql> SET @A = CONVERT('Gaurav' USING ucs2); 
Query OK, 0 rows affected (0.15 sec) 
mysql> Select Char_length(@A), LENGTH(@A); 
+-----------------+------------+ 
| Char_length(@A) | LENGTH(@A) | 
+-----------------+------------+ 
| 6               | 12         | 
+-----------------+------------+ 
1 row in set (0.03 sec)

और अब, नीचे दिए गए उदाहरण में, हम UTF-8 में एक विशेष कैरेक्टर का उपयोग कर रहे हैं, जहां बाइट्स की संख्या भिन्न होती है, कैरेक्टर सेट। फिर हम परिणाम सेट से अंतर देख सकते हैं।

mysql> SET @B = CONVERT('©' USING utf8); 
Query OK, 0 rows affected (0.15 sec) 
mysql> Select CHAR_LENGTH(@B); 
+-----------------------+ 
| CHAR_LENGTH(@B)       | 
+-----------------------+ 
| 1                     | 
+-----------------------+ 
1 row in set (0.00 sec) 
mysql> Select LENGTH(@B); 
+---------------+ 
| LENGTH(@B)    | 
+---------------+ 
| 2             | 
+---------------+ 
1 row in set (0.00 sec)

  1. - MySQL में AND और && ऑपरेटर में अंतर क्या है?

    MySQL में AND और && दोनों **लॉजिकल AND** ऑपरेटर हैं और **कार्यात्मक रूप से समान** हैं। एकमात्र अंतर: AND **मानक SQL** है, && **MySQL-विशिष्ट** (स्वामित्व) सिंटैक्स है। समानता प्रदर्शन केस 1: दोनों ऑपरेंड 1 (TRUE) SELECT 1 && 1 AS Result; +--------+ | Result | +--------+ | 1 | +--------+ केस

  1. - MySQL में TINYINT(1) और Boolean में क्या अंतर है?

    MySQL में TINYINT(1) और Boolean: कोई अंतर नहीं MySQL में BOOLEAN (या BOOL) वास्तव में TINYINT(1) का एक पर्याय (synonym) है। दोनों आंतरिक रूप से समान हैं। प्रदर्शन: Boolean कॉलम वास्तव में TINYINT(1) बनाता है CREATE TABLE DemoTable ( isMarried BOOLEAN ); DESC DemoTable; आउटपुट: +-----------+--

  1. - MySQL में != NULL और IS NOT NULL का अंतर

    NULL तुलना: != NULL बनाम IS NOT NULL MySQL में किसी मान की तुलना !=NULL से करने पर परिणाम NULL होता है, इसलिए !=NULL अर्थहीन है। सही तरीका IS NOT NULL है। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1970 ( Value int ); Query OK, 0 rows affected (0.00 sec) mysql> insert into DemoTabl