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.