V MariaDB, LENGTH()
je vestavěná řetězcová funkce, která vrací délku daného řetězcového argumentu.
Ve výchozím režimu se délka řetězce měří v bajtech. Ale v režimu Oracle se měří ve znacích.
Syntaxe
Syntaxe vypadá takto:
LENGTH(str)
Kde str
je řetězec, pro který bude vrácena délka.
Příklad
Zde je základní příklad:
SELECT LENGTH('café');
Výsledek:
+-----------------+ | LENGTH('café') | +-----------------+ | 5 | +-----------------+
V tomto případě byl řetězec dlouhý čtyři znaky, ale LENGTH()
vrátil 5
.
Důvodem je, že poslední znak používá dva bajty a já používám výchozí režim SQL (můj sql_mode=DEFAULT
). Ve výchozím režimu SQL LENGTH()
vrátí počet bajtů.
Režim Oracle
Přepnutí do režimu Oracle vede k LENGTH()
vrací pouze počet znaků v řetězci (na rozdíl od počtu bajtů).
Pojďme přepnout naši relaci do režimu Oracle:
SET SESSION sql_mode='ORACLE';
A nyní spustíme předchozí LENGTH()
znovu příklad:
SELECT LENGTH('café');
Výsledek:
+-----------------+ | LENGTH('café') | +-----------------+ | 4 | +-----------------+
Tentokrát vrací počet znaků (4) místo počtu bajtů (5).
V režimu Oracle LENGTH()
vrátí stejný výsledek jako CHAR_LENGTH()
a jeho synonymum, CHARACTER_LENGTH()
.
Porovnání s CHAR_LENGTH()
a BIT_LENGTH()
Vraťme se zpět do výchozího režimu:
SET SESSION sql_mode=DEFAULT;
Zde je rychlé srovnání mezi LENGTH()
ve výchozím režimu CHAR_LENGTH()
a BIT_LENGTH()
který vrací počet bitů v řetězci:
SELECT
LENGTH('อ'),
CHAR_LENGTH('อ'),
BIT_LENGTH('อ');
Výsledek:
+---------------+--------------------+-------------------+ | LENGTH('อ') | CHAR_LENGTH('อ') | BIT_LENGTH('อ') | +---------------+--------------------+-------------------+ | 3 | 1 | 24 | +---------------+--------------------+-------------------+
Tento thajský znak (อ
) používá 3 bajty, a proto LENGTH()
vrátí 3
.
CHAR_LENGTH()
vrátí 1
, protože je to stále jen jeden znak a BIT_LENGTH()
vrátí počet bitů (24
).
Znovu, pokud bychom byli v režimu Oracle, LENGTH()
by vrátilo totéž jako CHAR_LENGTH()
.
Neřetězcové
Pokud argument není řetězec, převede se na řetězec.
Zde je další příklad, který používá číslo:
SELECT LENGTH(1234);
Výsledek:
+--------------+ | LENGTH(1234) | +--------------+ | 4 | +--------------+
Nulové argumenty
Předávání null
vrátí null
:
SELECT LENGTH(null);
Výsledek:
+--------------+ | LENGTH(null) | +--------------+ | NULL | +--------------+
Chybí argument
Volání LENGTH()
bez předání argumentu dojde k chybě:
SELECT LENGTH();
Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LENGTH'