In MariaDB, CHAR_LENGTH()
is een ingebouwde tekenreeksfunctie die de lengte van het gegeven tekenreeksargument teruggeeft, gemeten in tekens.
Syntaxis
De syntaxis gaat als volgt:
CHAR_LENGTH(str)
Waar str
is de tekenreeks waarvoor de lengte wordt geretourneerd.
Voorbeeld
Hier is een eenvoudig voorbeeld:
SELECT CHAR_LENGTH('Splash');
Resultaat:
+-----------------------+ | CHAR_LENGTH('Splash') | +-----------------------+ | 6 | +-----------------------+
Multi-Byte-tekens
De CHAR_LENGTH()
functie telt elk teken als een enkel teken, ongeacht het aantal bytes dat het gebruikt. Daarom worden tekens die twee, drie of zelfs vier bytes gebruiken nog steeds als één teken geteld.
Dit in tegenstelling tot functies zoals LENGTH()
, die het aantal bytes retourneert (tenzij het in Oracle-modus is, in welk geval het hetzelfde doet als CHAR_LENGTH()
– geeft het aantal tekens terug). Het is ook in tegenstelling tot functies zoals BIT_LENGTH()
die het aantal bits in een string teruggeeft.
Hier is een voorbeeld dat deze functies vergelijkt:
SELECT
CHAR_LENGTH('©'),
LENGTH('©'),
BIT_LENGTH('©');
Resultaat:
+-------------------+--------------+------------------+ | CHAR_LENGTH('©') | LENGTH('©') | BIT_LENGTH('©') | +-------------------+--------------+------------------+ | 1 | 2 | 16 | +-------------------+--------------+------------------+
Het copyright-symbool (©
) gebruikt twee bytes. CHAR_LENGTH()
retourneert 1, omdat het nog steeds maar een enkel teken is. LENGTH()
en BIT_LENGTH()
aan de andere kant, retourneer respectievelijk het aantal bytes en bits.
Dit voorbeeld is gedaan met de standaard SQL_MODE
. Zoals gezegd, als het in Oracle-modus was geweest, LENGTH()
zou zich gedragen hebben als CHAR_LENGTH()
en retourneerde 1
.
Nullargumenten
Doorgeven van null
retourneert null
:
SELECT CHAR_LENGTH(null);
Resultaat:
+-------------------+ | CHAR_LENGTH(null) | +-------------------+ | NULL | +-------------------+
Ontbrekend argument
Aanroepen van CHAR_LENGTH()
zonder een argument door te geven resulteert in een fout:
SELECT CHAR_LENGTH();
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'CHAR_LENGTH'
Zie ook de CHARACTER_LENGTH()
functie, wat een synoniem is voor CHAR_LENGTH()
.