I MySQL, CHAR_LENGTH()
funktion returnerar längden på en sträng, mätt i tecken. MySQL har också CHARACTER_LENGTH()
, som är en synonym för CHAR_LENGTH()
.
Här är ett exempel:
SELECT CHAR_LENGTH('Lit');
Och här är resultatet:
+--------------------+ | CHAR_LENGTH('Lit') | +--------------------+ | 3 | +--------------------+
Avslutande ämnen
Observera att CHAR_LENGTH()
inkluderar efterföljande ämnen (t.ex. mellanslag i slutet av strängen) i sina beräkningar.
Så om vi lägger till ett mellanslag i slutet av föregående exempel:
SELECT CHAR_LENGTH('Lit ');
Här är resultatet:
+---------------------+ | CHAR_LENGTH('Lit ') | +---------------------+ | 4 | +---------------------+
Men vi kan alltid ta bort det efterföljande utrymmet genom att lägga till TRIM()
funktion i mixen:
SELECT CHAR_LENGTH(TRIM('Lit '));
Här är resultatet:
+---------------------------+ | CHAR_LENGTH(TRIM('Lit ')) | +---------------------------+ | 3 | +---------------------------+
Leading Blanks
Det är samma sak med ledande blanks. Så om vi lägger till ett mellanslag i starten av strängen istället:
SELECT CHAR_LENGTH(' Lit');
Vi får samma resultat:
+---------------------+ | CHAR_LENGTH(' Lit') | +---------------------+ | 4 | +---------------------+
Datatyper
Det spelar ingen roll vilken datatyp strängen lagras som, den kommer fortfarande att returnera samma resultat. Detta är i motsats till LENGTH()
funktion, som returnerar dubbla antalet tecken i de fall data lagras som en Unicode-sträng.
I följande exempel använder kolumnen ArtistName varchar(255) :
SELECT CHAR_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Här är resultatet:
+-------------------------+ | CHAR_LENGTH(ArtistName) | +-------------------------+ | 3 | +-------------------------+
Och om vi ändrar ArtistName
kolumn för att använda Unicode:
ALTER TABLE Artists MODIFY COLUMN ArtistName VARCHAR(255) unicode;
Och kör samma fråga igen:
SELECT CHAR_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Vi får fortfarande samma resultat:
+-------------------------+ | CHAR_LENGTH(ArtistName) | +-------------------------+ | 3 | +-------------------------+
Men om vi hade använt LENGTH()
funktion, skulle resultatet bli 6. Detta beror på att Unicode-strängar lagrar 2 byte per tecken och LENGTH()
funktion returnerar längden mätt i byte.