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

Wie CHAR_LENGTH() in MariaDB funktioniert

In MariaDB, CHAR_LENGTH() ist eine eingebaute String-Funktion, die die Länge des gegebenen String-Arguments zurückgibt, gemessen in Zeichen.

Syntax

Die Syntax lautet wie folgt:

CHAR_LENGTH(str)

Wobei str ist die Zeichenfolge, für die die Länge zurückgegeben wird.

Beispiel

Hier ist ein einfaches Beispiel:

SELECT CHAR_LENGTH('Splash');

Ergebnis:

+-----------------------+
| CHAR_LENGTH('Splash') |
+-----------------------+
|                     6 |
+-----------------------+

Multibyte-Zeichen

Die CHAR_LENGTH() -Funktion zählt jedes Zeichen als einzelnes Zeichen, unabhängig davon, wie viele Bytes es verwendet. Daher werden Zeichen, die zwei, drei oder sogar vier Bytes verwenden, weiterhin als ein Zeichen gezählt.

Dies steht im Gegensatz zu Funktionen wie LENGTH() , das die Anzahl der Bytes zurückgibt (es sei denn, es befindet sich im Oracle-Modus, in diesem Fall macht es dasselbe wie CHAR_LENGTH() – gibt die Anzahl der Zeichen zurück). Es steht auch im Gegensatz zu Funktionen wie BIT_LENGTH() die die Anzahl der Bits in einem String zurückgibt.

Hier ist ein Beispiel, das diese Funktionen vergleicht:

SELECT 
    CHAR_LENGTH('©'),
    LENGTH('©'),
    BIT_LENGTH('©');

Ergebnis:

+-------------------+--------------+------------------+
| CHAR_LENGTH('©')  | LENGTH('©')  | BIT_LENGTH('©')  |
+-------------------+--------------+------------------+
|                 1 |            2 |               16 |
+-------------------+--------------+------------------+

Das Copyright-Symbol (© ) verwendet zwei Bytes. CHAR_LENGTH() gibt 1 zurück, weil es immer noch nur ein einzelnes Zeichen ist. LENGTH() und BIT_LENGTH() geben andererseits die Anzahl der Bytes bzw. Bits zurück.

Dieses Beispiel wurde mit dem Standard SQL_MODE durchgeführt . Wie bereits erwähnt, wenn es sich im Oracle-Modus befunden hätte, LENGTH() hätte sich wie CHAR_LENGTH() verhalten und gab 1 zurück .

Null-Argumente

Übergabe von null gibt null zurück :

SELECT CHAR_LENGTH(null);

Ergebnis:

+-------------------+
| CHAR_LENGTH(null) |
+-------------------+
|              NULL |
+-------------------+

Fehlendes Argument

Aufruf von CHAR_LENGTH() ohne Übergabe eines Arguments führt zu einem Fehler:

SELECT CHAR_LENGTH();

Ergebnis:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'CHAR_LENGTH'

Siehe auch CHARACTER_LENGTH() Funktion, die ein Synonym für CHAR_LENGTH() ist .