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.