V MySQL je to CHAR_LENGTH() Funkce vrací délku řetězce měřenou ve znacích. MySQL má také CHARACTER_LENGTH() , což je synonymum pro CHAR_LENGTH() .
Zde je příklad:
SELECT CHAR_LENGTH('Lit');
A tady je výsledek:
+--------------------+
| CHAR_LENGTH('Lit') |
+--------------------+
| 3 |
+--------------------+
Koncové mezery
Všimněte si, že CHAR_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 CHAR_LENGTH('Lit ');
Zde je výsledek:
+---------------------+
| CHAR_LENGTH('Lit ') |
+---------------------+
| 4 |
+---------------------+
Vždy však můžeme tuto koncovou mezeru odstranit přidáním TRIM() funkce do mixu:
SELECT CHAR_LENGTH(TRIM('Lit '));
Zde je výsledek:
+---------------------------+
| CHAR_LENGTH(TRIM('Lit ')) |
+---------------------------+
| 3 |
+---------------------------+
Hlavní mezery
Je to stejné jako s předními prázdnými místy. Pokud tedy přidáme mezeru na start řetězce místo toho:
SELECT CHAR_LENGTH(' Lit');
Dostaneme stejný výsledek:
+---------------------+
| CHAR_LENGTH(' Lit') |
+---------------------+
| 4 |
+---------------------+
Typy dat
Nezáleží na tom, jaký typ dat je řetězec uložen, bude stále vracet stejné výsledky. 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 CHAR_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Zde je výsledek:
+-------------------------+ | CHAR_LENGTH(ArtistName) | +-------------------------+ | 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 CHAR_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Stále dostáváme stejný výsledek:
+-------------------------+ | CHAR_LENGTH(ArtistName) | +-------------------------+ | 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.