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.