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'