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:
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!