In MySQL is de CHAR_LENGTH()
functie retourneert de lengte van een string, gemeten in karakters. MySQL heeft ook CHARACTER_LENGTH()
, wat een synoniem is voor CHAR_LENGTH()
.
Hier is een voorbeeld:
SELECT CHAR_LENGTH('Lit');
En hier is het resultaat:
+--------------------+ | CHAR_LENGTH('Lit') | +--------------------+ | 3 | +--------------------+
Blanco's achterop
Merk op dat CHAR_LENGTH()
neemt volgspaties (bijv. spaties aan het einde van de tekenreeks) op in zijn berekeningen.
Dus als we een spatie toevoegen aan het einde van het vorige voorbeeld:
SELECT CHAR_LENGTH('Lit ');
Dit is het resultaat:
+---------------------+ | CHAR_LENGTH('Lit ') | +---------------------+ | 4 | +---------------------+
Maar we kunnen die volgspatie altijd verwijderen door de TRIM()
. toe te voegen functie in de mix:
SELECT CHAR_LENGTH(TRIM('Lit '));
Dit is het resultaat:
+---------------------------+ | CHAR_LENGTH(TRIM('Lit ')) | +---------------------------+ | 3 | +---------------------------+
Leading blanks
Het is hetzelfde met leidende spaties. Dus als we een spatie toevoegen aan de start van de tekenreeks in plaats daarvan:
SELECT CHAR_LENGTH(' Lit');
We krijgen hetzelfde resultaat:
+---------------------+ | CHAR_LENGTH(' Lit') | +---------------------+ | 4 | +---------------------+
Gegevenstypen
Het maakt niet uit met welk gegevenstype de tekenreeks is opgeslagen, het geeft nog steeds dezelfde resultaten. Dit in tegenstelling tot de LENGTH()
functie, die het dubbele aantal tekens retourneert in gevallen waarin de gegevens worden opgeslagen als een Unicode-tekenreeks.
In het volgende voorbeeld gebruikt de kolom ArtistName varchar(255) :
SELECT CHAR_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Dit is het resultaat:
+-------------------------+ | CHAR_LENGTH(ArtistName) | +-------------------------+ | 3 | +-------------------------+
En als we de ArtistName
. wijzigen kolom om Unicode te gebruiken:
ALTER TABLE Artists MODIFY COLUMN ArtistName VARCHAR(255) unicode;
En voer dezelfde query opnieuw uit:
SELECT CHAR_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
We krijgen nog steeds hetzelfde resultaat:
+-------------------------+ | CHAR_LENGTH(ArtistName) | +-------------------------+ | 3 | +-------------------------+
Als we echter de LENGTH()
. hadden gebruikt functie, zou het resultaat 6 zijn. Dit komt omdat Unicode-strings 2 bytes per teken opslaan, en de LENGTH()
functie retourneert de lengte gemeten in bytes.