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

Jak funguje funkce CHARACTER_LENGTH() v MySQL

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.


  1. Převést datum na jiné časové pásmo v SQL Server

  2. Podporuje váš ovladač ODBC zdroje uživatelských dat?

  3. Chyba při vytváření tabulky:Máte chybu v syntaxi SQL poblíž 'order( order_id INT UNSIGNED NOT NULL AUTO_INCREMENT, user_id ' na řádku 1

  4. Získejte obálku, tj. překrývající se časové úseky