sql >> Database >  >> RDS >> Mysql

Wat is CHAR_LENGTH() in MySQL?

In MySQL is de CHAR_LENGTH() functie retourneert de lengte van een string, gemeten in karakters. MySQL heeft ook CHARACTER_LENGTH() , wat een synoniem is voor CHAR_LENGTH() .

Hier is een voorbeeld:

SELECT CHAR_LENGTH('Lit');

En hier is het resultaat:

+--------------------+
| CHAR_LENGTH('Lit') |
+--------------------+
|                  3 |
+--------------------+

Blanco's achterop

Merk op dat CHAR_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 CHAR_LENGTH('Lit ');

Dit is het resultaat:

+---------------------+
| CHAR_LENGTH('Lit ') |
+---------------------+
|                   4 |
+---------------------+

Maar we kunnen die volgspatie altijd verwijderen door de TRIM() . toe te voegen functie in de mix:

SELECT CHAR_LENGTH(TRIM('Lit '));

Dit is het resultaat:

+---------------------------+
| CHAR_LENGTH(TRIM('Lit ')) |
+---------------------------+
|                         3 |
+---------------------------+

Leading blanks

Het is hetzelfde met leidende spaties. Dus als we een spatie toevoegen aan de start van de tekenreeks in plaats daarvan:

SELECT CHAR_LENGTH(' Lit');

We krijgen hetzelfde resultaat:

+---------------------+
| CHAR_LENGTH(' Lit') |
+---------------------+
|                   4 |
+---------------------+

Gegevenstypen

Het maakt niet uit met welk gegevenstype de tekenreeks is opgeslagen, het geeft nog steeds dezelfde resultaten. 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 CHAR_LENGTH(ArtistName) 
FROM Artists
WHERE ArtistName = 'Lit';

Dit is het resultaat:

+-------------------------+
| CHAR_LENGTH(ArtistName) |
+-------------------------+
|                       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 CHAR_LENGTH(ArtistName) 
FROM Artists
WHERE ArtistName = 'Lit';

We krijgen nog steeds hetzelfde resultaat:

+-------------------------+
| CHAR_LENGTH(ArtistName) |
+-------------------------+
|                       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. WAARSCHUWING:Office-versie 2204 kan Access-toepassingen breken

  2. Android-programma om de SQLite-database naar Excel te converteren

  3. Hoe de fout `prisma/client is nog niet geïnitialiseerd` op Vercel op te lossen?

  4. Hoe UUID() werkt in MariaDB