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.