V MariaDB, CHAR_LENGTH()
je vestavěná řetězcová funkce, která vrací délku daného řetězcového argumentu měřenou ve znacích.
Syntaxe
Syntaxe vypadá takto:
CHAR_LENGTH(str)
Kde str
je řetězec, pro který bude vrácena délka.
Příklad
Zde je základní příklad:
SELECT CHAR_LENGTH('Splash');
Výsledek:
+-----------------------+ | CHAR_LENGTH('Splash') | +-----------------------+ | 6 | +-----------------------+
Vícebajtové znaky
CHAR_LENGTH()
Funkce počítá každý znak jako jeden znak, bez ohledu na to, kolik bajtů používá. Znaky, které používají dva, tři nebo dokonce čtyři bajty, budou proto stále počítány jako jeden znak.
To je v kontrastu s funkcemi, jako je LENGTH()
, který vrací počet bajtů (pokud to není v režimu Oracle, v takovém případě dělá to samé jako CHAR_LENGTH()
– vrátí počet znaků). Je to také v kontrastu s funkcemi jako BIT_LENGTH()
který vrací počet bitů v řetězci.
Zde je příklad, který porovnává tyto funkce:
SELECT
CHAR_LENGTH('©'),
LENGTH('©'),
BIT_LENGTH('©');
Výsledek:
+-------------------+--------------+------------------+ | CHAR_LENGTH('©') | LENGTH('©') | BIT_LENGTH('©') | +-------------------+--------------+------------------+ | 1 | 2 | 16 | +-------------------+--------------+------------------+
Symbol autorských práv (©
) používá dva bajty. CHAR_LENGTH()
vrátí 1, protože je to stále jen jeden znak. LENGTH()
a BIT_LENGTH()
na druhé straně vrátí počet bajtů a bitů.
Tento příklad byl proveden pomocí výchozího SQL_MODE
. Jak bylo zmíněno, pokud by byl v režimu Oracle, LENGTH()
by se chovalo jako CHAR_LENGTH()
a vrátil 1
.
Nulové argumenty
Předávání null
vrátí null
:
SELECT CHAR_LENGTH(null);
Výsledek:
+-------------------+ | CHAR_LENGTH(null) | +-------------------+ | NULL | +-------------------+
Chybí argument
Volání CHAR_LENGTH()
bez předání argumentu dojde k chybě:
SELECT CHAR_LENGTH();
Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'CHAR_LENGTH'
Viz také CHARACTER_LENGTH()
funkce, což je synonymum pro CHAR_LENGTH()
.