I MySQL er CHAR_LENGTH() funktion returnerer længden af en streng, målt i tegn. MySQL har også CHARACTER_LENGTH() , som er et synonym for CHAR_LENGTH() .
Her er et eksempel:
SELECT CHAR_LENGTH('Lit');
Og her er resultatet:
+--------------------+
| CHAR_LENGTH('Lit') |
+--------------------+
| 3 |
+--------------------+
Tilsluttede emner
Bemærk, at CHAR_LENGTH() inkluderer efterfølgende blanks (f.eks. mellemrum for enden af strengen) i sine beregninger.
Så hvis vi tilføjer et mellemrum til slutningen af det forrige eksempel:
SELECT CHAR_LENGTH('Lit');
Her er resultatet:
+---------------------+
| CHAR_LENGTH('Lit ') |
+---------------------+
| 4 |
+---------------------+
Men vi kan altid fjerne det efterfølgende mellemrum ved at tilføje TRIM() funktion i blandingen:
SELECT CHAR_LENGTH(TRIM('Lit '));
Her er resultatet:
+---------------------------+
| CHAR_LENGTH(TRIM('Lit ')) |
+---------------------------+
| 3 |
+---------------------------+
Leading Blanks
Det er det samme med ledende blanke. Så hvis vi tilføjer et mellemrum til start af strengen i stedet for:
SELECT CHAR_LENGTH(' Lit');
Vi får samme resultat:
+---------------------+
| CHAR_LENGTH(' Lit') |
+---------------------+
| 4 |
+---------------------+
Datatyper
Det er lige meget, hvilken datatype strengen er gemt som, den vil stadig returnere de samme resultater. Dette er i modsætning til LENGTH() funktion, som returnerer det dobbelte antal tegn i tilfælde, hvor dataene gemmes som en Unicode-streng.
I det følgende eksempel bruger kolonnen ArtistName varchar(255) :
SELECT CHAR_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Her er resultatet:
+-------------------------+ | CHAR_LENGTH(ArtistName) | +-------------------------+ | 3 | +-------------------------+
Og hvis vi ændrer ArtistName kolonne for at bruge Unicode:
ALTER TABLE Artists MODIFY COLUMN ArtistName VARCHAR(255) unicode;
Og kør den samme forespørgsel igen:
SELECT CHAR_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Vi får stadig det samme resultat:
+-------------------------+ | CHAR_LENGTH(ArtistName) | +-------------------------+ | 3 | +-------------------------+
Men hvis vi havde brugt LENGTH() funktion, ville resultatet være 6. Dette skyldes, at Unicode-strenge gemmer 2 bytes pr. tegn, og LENGTH() funktion returnerer længden målt i bytes.