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'