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'