V MariaDB, OCTET_LENGTH() je vestavěná řetězcová funkce, která vrací délku daného řetězcového argumentu měřenou v oktetech (bajtech).
OCTET_LENGTH() je synonymem pro LENGTHB() .
Je to také synonymum pro LENGTH() když není v režimu Oracle (LENGTH() se v režimu Oracle chová jinak).
Syntaxe
Syntaxe vypadá takto:
OCTET_LENGTH(str)
Kde str je řetězec, pro který bude vrácena délka.
Příklad
Zde je základní příklad:
SELECT OCTET_LENGTH('café'); Výsledek:
+-----------------------+
| OCTET_LENGTH('café') |
+-----------------------+
| 5 |
+-----------------------+
V tomto případě byl řetězec dlouhý čtyři znaky, ale OCTET_LENGTH() vrátil 5 . Důvodem je, že poslední znak používá dva oktety/bajty.
Porovnání s CHAR_LENGTH() a BIT_LENGTH()
Zde je rychlé srovnání mezi OCTET_LENGTH() , CHAR_LENGTH() (což vrátí počet znaků v řetězci) a BIT_LENGTH() (což vrací počet bitů v řetězci):
SELECT
OCTET_LENGTH('อ'),
CHAR_LENGTH('อ'),
BIT_LENGTH('อ'); Výsledek:
+---------------------+--------------------+-------------------+
| OCTET_LENGTH('อ') | CHAR_LENGTH('อ') | BIT_LENGTH('อ') |
+---------------------+--------------------+-------------------+
| 3 | 1 | 24 |
+---------------------+--------------------+-------------------+
Tento thajský znak (อ ) používá 3 bajty, a proto OCTET_LENGTH() vrátí 3 .
CHAR_LENGTH() vrátí počet znaků (1 ) a BIT_LENGTH() vrátí počet bitů (24 ).
Neřetězcové
Pokud argument není řetězec, převede se na řetězec.
Zde je další příklad, který používá číslo:
SELECT OCTET_LENGTH(1234); Výsledek:
+--------------------+ | OCTET_LENGTH(1234) | +--------------------+ | 4 | +--------------------+
Nulové argumenty
Předávání null vrátí null :
SELECT OCTET_LENGTH(null); Výsledek:
+--------------------+ | OCTET_LENGTH(null) | +--------------------+ | NULL | +--------------------+
Chybí argument
Volání OCTET_LENGTH() bez předání argumentu dojde k chybě:
SELECT OCTET_LENGTH(); Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'OCTET_LENGTH'