Een van de vele functies in MySQL is de LENGTH()
functie, die de lengte van een string retourneert, gemeten in bytes.
Voorbeeld:
SELECT LENGTH('Lit');
Resultaat:
+---------------+ | LENGTH('Lit') | +---------------+ | 3 | +---------------+
Dit is een eenvoudig voorbeeld en het resultaat is hetzelfde als wanneer we de CHAR_LENGTH()
hadden gebruikt functie. Echter, de LENGTH()
functie kan verschillende resultaten opleveren, afhankelijk van het gegevenstype.
Gegevenstypen
Wanneer u een database opvraagt, wordt de LENGTH()
functie kan een ander resultaat retourneren, afhankelijk van het gegevenstype. Unicode-tekenreeksen retourneren het dubbele aantal bytes. UTF-8-tekenreeksen kunnen variëren.
Hier is een voorbeeld van het gebruik van UTF-8:
SELECT LENGTH(_utf8 '€');
Resultaten:
+---------------------+ | LENGTH(_utf8 '€') | +---------------------+ | 3 | +---------------------+
In dit geval gebruikt het euroteken 3 bytes.
In het volgende voorbeeld vragen we een database op. In dit geval is de ArtistName
kolom gebruikt varchar(255) gegevenstype:
SELECT LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Het resultaat ziet er dus als volgt uit:
+--------------------+ | LENGTH(ArtistName) | +--------------------+ | 3 | +--------------------+
Als we de kolom echter wijzigen in ucs2
, wordt elk teken weergegeven door een Unicode-code van 2 bytes, en daarom zal het resultaat anders zijn.
Om te demonstreren, kunnen we de tabel als volgt wijzigen:
SELECT LENGTH(ArtistName) ALTER TABLE Artists MODIFY COLUMN ArtistName VARCHAR(255) CHARSET ucs2;
Als we het nu opnieuw opvragen:
SELECT LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Resultaat:
+--------------------+ | LENGTH(ArtistName) | +--------------------+ | 6 | +--------------------+
Blanco's achterop
De LENGTH()
functie telt volgspaties (zoals spaties aan het einde van de tekenreeks). Dus als we een spatie toevoegen aan het einde van het eerste voorbeeld, krijgen we het volgende resultaat:
SELECT LENGTH('Lit ');
Resultaat:
+----------------+ | LENGTH('Lit ') | +----------------+ | 4 | +----------------+
Leading blanks
We krijgen hetzelfde resultaat met voorloopspaties (bijv. spaties aan het begin van de tekenreeks):
SELECT LENGTH(' Lit');
Resultaat:
+----------------+ | LENGTH(' Lit') | +----------------+ | 4 | +----------------+
Transact-SQL (voor SQL Server, Azure) heeft een vergelijkbare functie, maar in T-SQL heet het DATALENGTH()
.