V MariaDB, CHARACTER_LENGTH()
je vestavěná řetězcová funkce, která vrací délku daného argumentu řetězce měřenou ve znacích.
CHARACTER_LENGTH()
je ve skutečnosti synonymem pro CHAR_LENGTH()
, takže můžete použít kterýkoli z nich.
Syntaxe
Syntaxe vypadá takto:
CHARACTER_LENGTH(str)
Kde str
je řetězec, pro který bude vrácena délka.
Příklad
Zde je základní příklad:
SELECT CHARACTER_LENGTH('Cat');
Výsledek:
+-------------------------+| CHARACTER_LENGTH('Kočka') |+-------------------------+| 3 |+-------------------------+
V tomto případě měl řetězec tři znaky, a tak jsme dostali 3
.
Neřetězcové
Pokud argument není řetězec, převede se na řetězec.
Zde je další příklad, který používá číslo:
SELECT CHARACTER_LENGTH(1234);
Výsledek:
+------------------------+| CHARACTER_LENGTH(1234) |+------------------------+| 4 |+------------------------+
Porovnání s CHAR_LENGTH()
Jak již bylo zmíněno, CHARACTER_LENGTH()
je synonymem pro CHAR_LENGTH()
. Zde je to v porovnání s CHAR_LENGTH()
:
SELECT
CHARACTER_LENGTH(1234),
CHAR_LENGTH(1234);
Výsledek:
+------------------------+-------------------+| CHARACTER_LENGTH(1234) | CHAR_LENGTH(1234) |+------------------------+------------------- +| 4 | 4 |+------------------------+-------------------+Vícebajtové znaky
CHARACTER_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é jakoCHARACTER_LENGTH()
– vrátí počet znaků). Je to také v kontrastu s funkcemi jakoBIT_LENGTH()
který vrací počet bitů v řetězci.Zde je příklad, který porovnává tyto funkce:
SELECT CHARACTER_LENGTH('อ'), LENGTH('อ'), BIT_LENGTH('อ');
Výsledek:
+-------------------------+---------------+---- ----------------+| CHARACTER_LENGTH('อ') | DÉLKA('อ') | BIT_LENGTH('อ') |+-------------------------+---------------+ --------------------+| 1 | 3 | 24 |+-------------------------+---------------+----- --------------+Tento thajský znak (
อ
) používá 3 bajty.CHARACTER_LENGTH()
vrátí 1, protože je to stále jen jeden znak.LENGTH()
aBIT_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 jakoCHARACTER_LENGTH()
a vrátil1
.Nulové argumenty
Předávání
null
vrátínull
:SELECT CHARACTER_LENGTH(null);
Výsledek:
+------------------------+| CHARACTER_LENGTH(null) |+------------------------+| NULL |+------------------------+Chybí argument
Volání
CHARACTER_LENGTH()
bez předání argumentu dojde k chybě:SELECT CHARACTER_LENGTH();
Výsledek:
CHYBA 1582 (42000):Nesprávný počet parametrů ve volání nativní funkce 'CHARACTER_LENGTH'