I MySQL er CHARACTER_LENGTH()
funktion returnerer længden af en streng, målt i tegn.
CHARACTER_LENGTH()
er et synonym for CHAR_LENGTH()
funktion.
Syntaks
Syntaksen ser sådan ud:
CHARACTER_LENGTH(str)
Hvor str
er den streng, som længden vil blive returneret for.
Eksempel 1 – Grundlæggende brug
Her er et eksempel på den grundlæggende brug:
SELECT CHARACTER_LENGTH('Cat');
Og her er resultatet:
+-------------------------+ | CHARACTER_LENGTH('Cat') | +-------------------------+ | 3 | +-------------------------+
Eksempel 2 – Efterfølgende blanke
Bemærk, at CHARACTER_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 CHARACTER_LENGTH('Cat ');
Her er resultatet:
+--------------------------+ | CHARACTER_LENGTH('Cat ') | +--------------------------+ | 4 | +--------------------------+
Men vi kan altid fjerne det efterfølgende mellemrum ved at bruge enten TRIM()
funktion eller RTRIM()
funktion:
SELECT CHARACTER_LENGTH(TRIM('Cat ')) AS 'TRIM', CHARACTER_LENGTH(RTRIM('Cat ')) AS 'RTRIM';
Her er resultatet:
+------+-------+ | TRIM | RTRIM | +------+-------+ | 3 | 3 | +------+-------+
Eksempel 3 – Leading Blanks
Det samme koncept gælder for førende emner. Du kan bruge enten TRIM
eller LTRIM
:
SELECT CHARACTER_LENGTH(TRIM(' Cat')) AS 'TRIM', CHARACTER_LENGTH(LTRIM(' Cat')) AS 'LTRIM';
Resultat:
+------+-------+ | TRIM | LTRIM | +------+-------+ | 3 | 3 | +------+-------+
Eksempel 4 – Datatyper
Det er lige meget, hvilken datatype strengen er gemt som, den vil stadig returnere det samme resultat. 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 CHARACTER_LENGTH(ArtistName) Result FROM Artists WHERE ArtistName = 'Lit';
Her er resultatet:
+--------+ | Result | +--------+ | 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 CHARACTER_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Vi får stadig det samme resultat:
+--------+ | Result | +--------+ | 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.