sql >> Databáze >  >> RDS >> MariaDB

Jak LENGTH() funguje v MariaDB

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'

  1. Zobrazuji obrázek z databáze PostgreSQL, bytea

  2. Asynchronní úlohy s Django a celerem

  3. Jak na čísla pater v SQL

  4. Jak dotazovat pole jsonb pomocí operátoru IN