V MySQL je to CHARACTER_LENGTH()
Funkce vrací délku řetězce měřenou ve znacích.
CHARACTER_LENGTH()
je synonymem pro CHAR_LENGTH()
funkce.
Syntaxe
Syntaxe vypadá takto:
CHARACTER_LENGTH(str)
Kde str
je řetězec, pro který bude vrácena délka.
Příklad 1 – Základní použití
Zde je příklad základního použití:
SELECT CHARACTER_LENGTH('Cat');
A tady je výsledek:
+-------------------------+ | CHARACTER_LENGTH('Cat') | +-------------------------+ | 3 | +-------------------------+
Příklad 2 – Koncové mezery
Všimněte si, že CHARACTER_LENGTH()
zahrnuje do svých výpočtů koncové mezery (např. mezery na konci řetězce).
Pokud tedy přidáme mezeru na konec předchozího příkladu:
SELECT CHARACTER_LENGTH('Cat ');
Zde je výsledek:
+--------------------------+ | CHARACTER_LENGTH('Cat ') | +--------------------------+ | 4 | +--------------------------+
Tuto mezeru na konci však můžeme vždy odstranit pomocí TRIM()
nebo RTRIM()
funkce:
SELECT CHARACTER_LENGTH(TRIM('Cat ')) AS 'TRIM', CHARACTER_LENGTH(RTRIM('Cat ')) AS 'RTRIM';
Zde je výsledek:
+------+-------+ | TRIM | RTRIM | +------+-------+ | 3 | 3 | +------+-------+
Příklad 3 – Úvodní mezery
Stejný koncept platí pro přední polotovary. Můžete použít buď TRIM
nebo LTRIM
:
SELECT CHARACTER_LENGTH(TRIM(' Cat')) AS 'TRIM', CHARACTER_LENGTH(LTRIM(' Cat')) AS 'LTRIM';
Výsledek:
+------+-------+ | TRIM | LTRIM | +------+-------+ | 3 | 3 | +------+-------+
Příklad 4 – Datové typy
Nezáleží na tom, jaký datový typ je řetězec uložen, stále vrátí stejný výsledek. To je v kontrastu s LENGTH()
funkce, která vrátí dvojnásobný počet znaků v případech, kdy jsou data uložena jako řetězec Unicode.
V následujícím příkladu používá sloupec ArtistName varchar(255) :
SELECT CHARACTER_LENGTH(ArtistName) Result FROM Artists WHERE ArtistName = 'Lit';
Zde je výsledek:
+--------+ | Result | +--------+ | 3 | +--------+
A pokud upravíme ArtistName
pro použití Unicode:
ALTER TABLE Artists MODIFY COLUMN ArtistName VARCHAR(255) unicode;
A znovu spusťte stejný dotaz:
SELECT CHARACTER_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Stále dostáváme stejný výsledek:
+--------+ | Result | +--------+ | 3 | +--------+
Pokud bychom však použili LENGTH()
výsledkem by bylo 6. Je to proto, že řetězce Unicode ukládají 2 bajty na znak a LENGTH()
funkce vrací délku měřenou v bajtech.