In MySQL der OCTET_LENGTH() Die Funktion gibt die Länge eines Strings zurück, gemessen in Bytes.
Diese Funktion ist eigentlich ein Synonym für LENGTH() .
Syntax
Die grundlegende Syntax lautet wie folgt:
OCTET_LENGTH(str)
Wobei str ist die Zeichenfolge, für die Sie die Länge zurückgeben möchten.
Beispiel
SELECT OCTET_LENGTH('Cat');
Ergebnis:
+---------------------+
| OCTET_LENGTH('Cat') |
+---------------------+
| 3 |
+---------------------+
Dies ist das gleiche Ergebnis, das wir erhalten würden, wenn wir CHAR_LENGTH() verwenden würden Funktion. Allerdings ist die OCTET_LENGTH() Funktion kann je nach Datentyp unterschiedliche Ergebnisse zurückgeben.
Datentypen
Wenn Sie eine Datenbank abfragen, wird die OCTET_LENGTH() Funktion kann je nach Datentyp ein anderes Ergebnis zurückgeben. Unicode-Strings geben die doppelte Anzahl von Bytes zurück. UTF-8-Strings können variieren.
Hier ist ein Beispiel für die Verwendung von UTF-8:
SELECT CHAR_LENGTH(_utf8 '€'), OCTET_LENGTH(_utf8 '€');
Ergebnisse:
+--------------------------+---------------------------+ | CHAR_LENGTH(_utf8 '€') | OCTET_LENGTH(_utf8 '€') | +--------------------------+---------------------------+ | 1 | 3 | +--------------------------+---------------------------+
In diesem Fall ist die Zeichenlänge 1, aber die Oktettlänge ist 3 Byte.
Im folgenden Beispiel fragen wir eine Datenbank ab. In diesem Fall der ArtistName Spalte verwendet varchar(255) Datentyp:
SELECT OCTET_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Das Ergebnis sieht also so aus:
+--------------------------+ | OCTET_LENGTH(ArtistName) | +--------------------------+ | 3 | +--------------------------+
Wenn wir jedoch die Spalte in ucs2 ändern , wird jedes Zeichen durch einen 2-Byte-Unicode-Code dargestellt, und daher ist das Ergebnis anders.
Zur Demonstration können wir die Tabelle wie folgt ändern:
SELECT OCTET_LENGTH(ArtistName) ALTER TABLE Artists MODIFY COLUMN ArtistName VARCHAR(255) CHARSET ucs2;
Wenn wir es jetzt noch einmal abfragen:
SELECT OCTET_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Ergebnis:
+--------------------------+ | OCTET_LENGTH(ArtistName) | +--------------------------+ | 6 | +--------------------------+
Nachgestellte Leerzeichen
Die OCTET_LENGTH() Die Funktion zählt nachgestellte Leerzeichen (z. B. Leerzeichen am Ende der Zeichenfolge). Wenn wir also am Ende des ersten Beispiels ein Leerzeichen hinzufügen, erhalten wir das folgende Ergebnis:
SELECT LENGTH('Cat ');
Ergebnis:
+----------------+
| LENGTH('Cat ') |
+----------------+
| 4 |
+----------------+
Führende Leerzeichen
Dasselbe Ergebnis erhalten wir mit führenden Leerzeichen (z. B. Leerzeichen am Anfang des Strings):
SELECT LENGTH(' Cat');
Ergebnis:
+----------------+
| LENGTH('Cat ') |
+----------------+
| 4 |
+----------------+
Es sei denn natürlich, wir verwenden eine Funktion wie TRIM() , RTRIM() , oder LTRIM() um die Leerzeichen zu kürzen.
Beispiel:
SELECT LENGTH(RTRIM('Cat '));
Ergebnis:
+-----------------------+
| LENGTH(RTRIM('Cat ')) |
+-----------------------+
| 3 |
+-----------------------+
Weitere Beispiele
Hier sind einige Beispiele für verschiedene Zeichenfolgen:
SELECT
OCTET_LENGTH('Quiet Riot') AS 'Result 1',
OCTET_LENGTH('') AS 'Result 2',
OCTET_LENGTH('1234 7') AS 'Result 3',
OCTET_LENGTH(' ') AS 'Result 4',
OCTET_LENGTH(TRIM(' ')) AS 'Result 5';
Ergebnis:
+----------+----------+----------+----------+----------+ | Result 1 | Result 2 | Result 3 | Result 4 | Result 5 | +----------+----------+----------+----------+----------+ | 10 | 0 | 7 | 3 | 0 | +----------+----------+----------+----------+----------+
Beachten Sie, dass die Ergebnisse 4 und 5 unterschiedlich sind, weil ich TRIM() verwendet habe Funktion, um die Leerzeichen aus Ergebnis 5 zu entfernen. Da der String nur aus Leerzeichen besteht, ist die Länge des getrimmten Strings 0 .
Transact-SQL (für SQL Server, Azure) hat eine ähnliche Funktion wie MySQLs LENGTH() und OCTET_LENGTH() Funktionen, aber in T-SQL heißt es DATALENGTH() .