In MariaDB, LENGTH()
is een ingebouwde tekenreeksfunctie die de lengte van het gegeven tekenreeksargument retourneert.
In de standaardmodus wordt de lengte van de string gemeten in bytes. Maar in Oracle-modus wordt het gemeten in tekens.
Syntaxis
De syntaxis gaat als volgt:
LENGTH(str)
Waar str
is de tekenreeks waarvoor de lengte wordt geretourneerd.
Voorbeeld
Hier is een eenvoudig voorbeeld:
SELECT LENGTH('café');
Resultaat:
+-----------------+ | LENGTH('café') | +-----------------+ | 5 | +-----------------+
In dit geval was de tekenreeks vier tekens lang, maar LENGTH()
5
geretourneerd .
Dit komt omdat het laatste teken twee bytes gebruikt en ik de standaard SQL-modus gebruik (mijn sql_mode=DEFAULT
). In de standaard SQL-modus, LENGTH()
geeft het aantal bytes terug.
Oracle-modus
Overschakelen naar Oracle-modus resulteert in LENGTH()
geeft alleen het aantal tekens in de tekenreeks terug (in tegenstelling tot het aantal bytes).
Laten we onze sessie overschakelen naar Oracle-modus:
SET SESSION sql_mode='ORACLE';
En laten we nu de vorige LENGTH()
. uitvoeren voorbeeld nogmaals:
SELECT LENGTH('café');
Resultaat:
+-----------------+ | LENGTH('café') | +-----------------+ | 4 | +-----------------+
Deze keer retourneert het het aantal tekens (4) in plaats van het aantal bytes (5).
In Oracle-modus, LENGTH()
geeft hetzelfde resultaat als CHAR_LENGTH()
en zijn synoniem, CHARACTER_LENGTH()
.
Vergelijking met CHAR_LENGTH()
en BIT_LENGTH()
Laten we teruggaan naar de standaardmodus:
SET SESSION sql_mode=DEFAULT;
Hier is een snelle vergelijking tussen LENGTH()
in de standaardmodus, CHAR_LENGTH()
en BIT_LENGTH()
die het aantal bits in een string teruggeeft:
SELECT
LENGTH('อ'),
CHAR_LENGTH('อ'),
BIT_LENGTH('อ');
Resultaat:
+---------------+--------------------+-------------------+ | LENGTH('อ') | CHAR_LENGTH('อ') | BIT_LENGTH('อ') | +---------------+--------------------+-------------------+ | 3 | 1 | 24 | +---------------+--------------------+-------------------+
Dit Thaise karakter (อ
) gebruikt 3 bytes, en daarom LENGTH()
retourneert 3
.
CHAR_LENGTH()
retourneert 1
, omdat het nog steeds maar een enkel teken is, en BIT_LENGTH()
geeft het aantal bits terug (24
).
Nogmaals, als we in Oracle-modus waren geweest, LENGTH()
zou hetzelfde hebben geretourneerd als CHAR_LENGTH()
.
Niet-strings
Als het argument geen string is, wordt het geconverteerd naar een string.
Hier is nog een voorbeeld dat een getal gebruikt:
SELECT LENGTH(1234);
Resultaat:
+--------------+ | LENGTH(1234) | +--------------+ | 4 | +--------------+
Nullargumenten
Doorgeven van null
retourneert null
:
SELECT LENGTH(null);
Resultaat:
+--------------+ | LENGTH(null) | +--------------+ | NULL | +--------------+
Ontbrekend argument
LENGTH()
. aanroepen zonder een argument door te geven resulteert in een fout:
SELECT LENGTH();
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LENGTH'