In MariaDB, LENGTH()
ist eine eingebaute String-Funktion, die die Länge des gegebenen String-Arguments zurückgibt.
Im Standardmodus wird die Länge der Zeichenfolge in Bytes gemessen. Aber im Oracle-Modus wird es in Zeichen gemessen.
Syntax
Die Syntax lautet wie folgt:
LENGTH(str)
Wobei str
ist die Zeichenfolge, für die die Länge zurückgegeben wird.
Beispiel
Hier ist ein einfaches Beispiel:
SELECT LENGTH('café');
Ergebnis:
+-----------------+ | LENGTH('café') | +-----------------+ | 5 | +-----------------+
In diesem Fall war der String vier Zeichen lang, aber LENGTH()
gab 5
zurück .
Dies liegt daran, dass das letzte Zeichen zwei Bytes verwendet und ich den Standard-SQL-Modus verwende (mein sql_mode=DEFAULT
). Im Standard-SQL-Modus LENGTH()
gibt die Anzahl der Bytes zurück.
Oracle-Modus
Das Umschalten in den Oracle-Modus führt zu LENGTH()
gibt nur die Anzahl der Zeichen in der Zeichenfolge zurück (im Gegensatz zur Anzahl der Bytes).
Lassen Sie uns unsere Sitzung in den Oracle-Modus umschalten:
SET SESSION sql_mode='ORACLE';
Und jetzt lassen Sie uns das vorherige LENGTH()
ausführen Beispiel nochmal:
SELECT LENGTH('café');
Ergebnis:
+-----------------+ | LENGTH('café') | +-----------------+ | 4 | +-----------------+
Diesmal gibt es die Anzahl der Zeichen (4) statt der Anzahl der Bytes (5) zurück.
Im Oracle-Modus LENGTH()
gibt dasselbe Ergebnis wie CHAR_LENGTH()
zurück und sein Synonym CHARACTER_LENGTH()
.
Vergleich mit CHAR_LENGTH()
und BIT_LENGTH()
Wechseln wir zurück in den Standardmodus:
SET SESSION sql_mode=DEFAULT;
Hier ist ein schneller Vergleich zwischen LENGTH()
im Standardmodus CHAR_LENGTH()
und BIT_LENGTH()
die die Anzahl der Bits in einem String zurückgibt:
SELECT
LENGTH('อ'),
CHAR_LENGTH('อ'),
BIT_LENGTH('อ');
Ergebnis:
+---------------+--------------------+-------------------+ | LENGTH('อ') | CHAR_LENGTH('อ') | BIT_LENGTH('อ') | +---------------+--------------------+-------------------+ | 3 | 1 | 24 | +---------------+--------------------+-------------------+
Dieses thailändische Zeichen (อ
) verwendet 3 Bytes und daher LENGTH()
gibt 3
zurück .
CHAR_LENGTH()
gibt 1
zurück , weil es immer noch nur ein einzelnes Zeichen ist, und BIT_LENGTH()
gibt die Anzahl der Bits zurück (24
).
Nochmals, wenn wir uns im Oracle-Modus befunden hätten, LENGTH()
hätte dasselbe zurückgegeben wie CHAR_LENGTH()
.
Nicht-Strings
Wenn das Argument kein String ist, wird es in einen String umgewandelt.
Hier ist ein weiteres Beispiel, das eine Zahl verwendet:
SELECT LENGTH(1234);
Ergebnis:
+--------------+ | LENGTH(1234) | +--------------+ | 4 | +--------------+
Null-Argumente
Übergabe von null
gibt null
zurück :
SELECT LENGTH(null);
Ergebnis:
+--------------+ | LENGTH(null) | +--------------+ | NULL | +--------------+
Fehlendes Argument
Aufruf von LENGTH()
ohne Übergabe eines Arguments führt zu einem Fehler:
SELECT LENGTH();
Ergebnis:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LENGTH'