Die MySQL LENGTH()-Funktion misst die Stringlänge in „Bytes“, was bedeutet, dass sie nicht multibytesicher ist. Der Unterschied in den Ergebnissen zwischen Multibyte-sicheren Funktionen wie CHAR_LENGTH() oder CHARACTER_LENGTH() und der Funktion LENGTH() ist besonders relevant für Unicode, wo die meisten Zeichen in zwei Bytes kodiert sind, oder für UTF-8. Die Anzahl der Bytes variiert . Wenn die Zeichenfolge beispielsweise vier 2-Byte-Zeichen enthält, gibt die Funktion LENGTH() 8 zurück und die Funktion CHAR_LENGTH() oder CHARACTER_LENGTH() gibt 4 zurück. Wie im Beispiel unten gezeigt -
mysql> Select LENGTH('tutorialspoint'); +--------------------------+ | LENGTH('tutorialspoint') | +--------------------------+ | 14 | +--------------------------+ 1 row in set (0.00 sec)
Die obige Ergebnismenge zeigt, dass die Länge der Zeichenfolge „tutorialspoint“ 14 beträgt, da sie nicht in Unicode-Zeichen konvertiert wurde. Die folgende Abfrage konvertiert es in Unicode-Zeichen –
mysql> SET @A = CONVERT('tutorialspoint' USING ucs2); Query OK, 0 rows affected (0.02 sec)
Nach der Konvertierung der Zeichenfolge in Unicode ist das Ergebnis 28 statt 14, da in Unicode ein einzelnes Zeichen 2 Bytes benötigt, wie unten gezeigt –
mysql> Select LENGTH(@A); +------------+ | LENGTH(@A) | +------------+ | 28 | +------------+ 1 row in set (0.00 sec)
Aber CHAR_LENGTH() Das angegebene Ergebnis ist 14, da es sich um eine Multibyte-sichere Funktion handelt, wie unten gezeigt -
mysql> Select CHAR_LENGTH(@A); +-----------------+ | CHAR_LENGTH(@A) | +-----------------+ | 14 | +-----------------+ 1 row in set (0.00 sec)
Das obige ist der detaillierte Inhalt vonWie misst die MySQL-Funktion LENGTH() die Stringlänge?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!