Heim  >  Artikel  >  Datenbank  >  Was ist der Unterschied zwischen den MySQL-Funktionen LENGTH() und CHAR_LENGTH()?

Was ist der Unterschied zwischen den MySQL-Funktionen LENGTH() und CHAR_LENGTH()?

WBOY
WBOYnach vorne
2023-09-02 16:57:071092Durchsuche

MySQL LENGTH() 和 CHAR_LENGTH() 函数有什么区别?

Beide Funktionen sind Zeichenfolgenfunktionen und geben die Anzahl der in der Zeichenfolge vorhandenen Zeichen zurück. Sie unterscheiden sich jedoch darin, dass die Funktion CHAR_LENGTH() die Zeichenfolgenlänge in „Zeichen“ misst, während die Funktion LENGTH() die Zeichenfolgenlänge in „Bytes“ misst. Mit anderen Worten können wir sagen, dass die Funktion CHAR_LENGTH() multibytesicher ist, d. h. sie ignoriert, ob ein Zeichen ein Einzelbyte oder ein Multibyte ist. Wenn eine Zeichenfolge beispielsweise vier 2-Byte-Zeichen enthält, LENGTH().

Diese Funktion gibt 8 zurück, während die Funktion CHAR_LENGTH() 4 zurückgibt. In diesem Sinne können wir sagen, dass CHAR_LENGTH() präzisere Ergebnisse liefert als die Funktion LENGTH().

Dieser Unterschied ist besonders relevant für Unicode, wo die meisten Zeichen in zwei Bytes kodiert sind, oder für UTF-8, wo die Anzahl der Bytes variiert. Das folgende Beispiel zeigt:

Beispiel

Im folgenden Beispiel wird zunächst die Zeichenfolge „Gaurav“ in ucs2 strong> konvertiert, dem Unicode-2-Byte-Zeichensatz. Wir können dann den Unterschied in der Ergebnismenge beobachten, d. h. LENGTH() gibt die Länge in Bytes zurück, während CHAR_LENGTH() die Länge in Zeichen zurückgibt.

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)

Im folgenden Beispiel verwenden wir Sonderzeichen in UTF-8, die Anzahl der Bytes im Zeichensatz variiert. Wir können dann die Unterschiede in der Ergebnismenge beobachten.

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)

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen den MySQL-Funktionen LENGTH() und CHAR_LENGTH()?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen