sql >> Database >  >> RDS >> Mysql

Hoe de CHARACTER_LENGTH()-functie werkt in MySQL

In MySQL is de CHARACTER_LENGTH() functie retourneert de lengte van een string, gemeten in karakters.

CHARACTER_LENGTH() is een synoniem voor de CHAR_LENGTH() functie.

Syntaxis

De syntaxis gaat als volgt:

CHARACTER_LENGTH(str)

Waar str is de tekenreeks waarvoor de lengte wordt geretourneerd.

Voorbeeld 1 – Basisgebruik

Hier is een voorbeeld van het basisgebruik:

SELECT CHARACTER_LENGTH('Cat');

En hier is het resultaat:

+-------------------------+
| CHARACTER_LENGTH('Cat') |
+-------------------------+
|                       3 |
+-------------------------+

Voorbeeld 2 – Achterliggende blanco's

Merk op dat CHARACTER_LENGTH() neemt volgspaties (bijv. spaties aan het einde van de tekenreeks) op in zijn berekeningen.

Dus als we een spatie toevoegen aan het einde van het vorige voorbeeld:

SELECT CHARACTER_LENGTH('Cat');

Dit is het resultaat:

+--------------------------+
| CHARACTER_LENGTH('Cat ') |
+--------------------------+
|                        4 |
+--------------------------+

Maar we kunnen die volgspatie altijd verwijderen met behulp van de TRIM() functie of de RTRIM() functie:

SELECT 
  CHARACTER_LENGTH(TRIM('Cat ')) AS 'TRIM',
  CHARACTER_LENGTH(RTRIM('Cat ')) AS 'RTRIM';

Dit is het resultaat:

+------+-------+
| TRIM | RTRIM |
+------+-------+
|    3 |     3 |
+------+-------+

Voorbeeld 3 – Voorloopspaties

Hetzelfde concept is van toepassing op leidende spaties. U kunt ofwel TRIM . gebruiken of LTRIM :

SELECT 
  CHARACTER_LENGTH(TRIM(' Cat')) AS 'TRIM',
  CHARACTER_LENGTH(LTRIM(' Cat')) AS 'LTRIM';

Resultaat:

+------+-------+
| TRIM | LTRIM |
+------+-------+
|    3 |     3 |
+------+-------+

Voorbeeld 4 – Gegevenstypen

Het maakt niet uit met welk gegevenstype de tekenreeks is opgeslagen, het geeft nog steeds hetzelfde resultaat. Dit in tegenstelling tot de LENGTH() functie, die het dubbele aantal tekens retourneert in gevallen waarin de gegevens worden opgeslagen als een Unicode-tekenreeks.

In het volgende voorbeeld gebruikt de kolom ArtistName varchar(255) :

SELECT CHARACTER_LENGTH(ArtistName) Result
FROM Artists
WHERE ArtistName = 'Lit';

Dit is het resultaat:

+--------+
| Result |
+--------+
|      3 |
+--------+

En als we de ArtistName . wijzigen kolom om Unicode te gebruiken:

ALTER TABLE Artists 
MODIFY COLUMN ArtistName VARCHAR(255) unicode;

En voer dezelfde query opnieuw uit:

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

We krijgen nog steeds hetzelfde resultaat:

+--------+
| Result |
+--------+
|      3 |
+--------+

Als we echter de LENGTH() . hadden gebruikt functie, zou het resultaat 6 zijn. Dit komt omdat Unicode-strings 2 bytes per teken opslaan, en de LENGTH() functie retourneert de lengte gemeten in bytes.


  1. Een blog maken in PHP en MySQL-database - DB-ontwerp

  2. Complexe Postgres-query

  3. Load balancing met ProxySQL voor Percona XtraDB Cluster

  4. System.Data.OracleClient vereist Oracle-clientsoftware versie 8.1.7 of hoger