MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Wie LENGTH() in MariaDB funktioniert

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'