sql >> Databáze >  >> RDS >> Mysql

Co je LENGTH() v MySQL?

Jednou z mnoha funkcí v MySQL je LENGTH() funkce, která vrací délku řetězce měřenou v bajtech.

Příklad:

SELECT LENGTH('Lit');

Výsledek:

+---------------+
| LENGTH('Lit') |
+---------------+
|             3 |
+---------------+

Toto je jednoduchý příklad a výsledek je stejný, jako kdybychom použili CHAR_LENGTH() funkce. Nicméně LENGTH() funkce může vrátit různé výsledky v závislosti na typu dat.

Typy dat

Při dotazu na databázi LENGTH() funkce může vrátit jiný výsledek v závislosti na typu dat. Řetězce Unicode vrátí dvojnásobný počet bajtů. Řetězce UTF-8 se mohou lišit.

Zde je příklad použití UTF-8:

SELECT LENGTH(_utf8 '€');

Výsledky:

+---------------------+
| LENGTH(_utf8 '€')   |
+---------------------+
|                   3 |
+---------------------+

V tomto případě znak Euro používá 3 bajty.

V následujícím příkladu se dotazujeme na databázi. V tomto případě ArtistName sloupec používá varchar(255) datový typ:

SELECT LENGTH(ArtistName) 
FROM Artists
WHERE ArtistName = 'Lit';

Výsledek tedy vypadá takto:

+--------------------+
| LENGTH(ArtistName) |
+--------------------+
|                  3 |
+--------------------+

Pokud však změníme sloupec na ucs2 , každý znak bude reprezentován 2bajtovým kódem Unicode, a proto bude výsledek jiný.

Pro demonstraci můžeme tabulku upravit takto:

SELECT LENGTH(ArtistName) 
ALTER TABLE Artists 
MODIFY COLUMN ArtistName VARCHAR(255) CHARSET ucs2;

Nyní, když se na to znovu zeptáme:

SELECT LENGTH(ArtistName) 
FROM Artists
WHERE ArtistName = 'Lit';

Výsledek:

+--------------------+
| LENGTH(ArtistName) |
+--------------------+
|                  6 |
+--------------------+

Koncové mezery

 LENGTH() funkce počítá koncové mezery (jako jsou mezery na konci řetězce). Pokud tedy přidáme mezeru na konec prvního příkladu, dostaneme následující výsledek:

SELECT LENGTH('Lit ');

Výsledek:

+----------------+
| LENGTH('Lit ') |
+----------------+
|              4 |
+----------------+

Hlavní mezery

Stejného výsledku dosáhneme s úvodními mezerami (např. mezerami na začátku řetězce):

SELECT LENGTH(' Lit');

Výsledek:

+----------------+
| LENGTH(' Lit') |
+----------------+
|              4 |
+----------------+

Transact-SQL (pro SQL Server, Azure) má podobnou funkci, ale v T-SQL se nazývá  DATALENGTH() .


  1. Připojte se k SQLite

  2. Kdy je lepší ukládat příznaky jako bitovou masku, než používat asociativní tabulku?

  3. Vnitřní spojení tří stolů

  4. Připojení k databázi PostgreSQL pomocí tunelování SSH v Pythonu