En av de många funktionerna i MySQL är LENGTH() funktion, som returnerar längden på en sträng, mätt i byte.
Exempel:
SELECT LENGTH('Lit');
Resultat:
+---------------+
| LENGTH('Lit') |
+---------------+
| 3 |
+---------------+
Detta är ett enkelt exempel och resultatet är detsamma som om vi hade använt CHAR_LENGTH() fungera. Men LENGTH() funktion kan returnera olika resultat, beroende på datatyp.
Datatyper
När du frågar en databas visas LENGTH() funktion kan returnera ett annat resultat, beroende på datatypen. Unicode-strängar returnerar dubbelt så många byte. UTF-8-strängar kan variera.
Här är ett exempel på hur man använder UTF-8:
SELECT LENGTH(_utf8 '€');
Resultat:
+---------------------+ | LENGTH(_utf8 '€') | +---------------------+ | 3 | +---------------------+
I det här fallet använder eurotecknet 3 byte.
I följande exempel frågar vi en databas. I det här fallet, ArtistName kolumnen använder varchar(255) datatyp:
SELECT LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Så resultatet ser ut så här:
+--------------------+ | LENGTH(ArtistName) | +--------------------+ | 3 | +--------------------+
Men om vi ändrar kolumnen till ucs2 , kommer varje tecken att representeras av en 2 byte Unicode-kod, och därför blir resultatet annorlunda.
För att demonstrera kan vi ändra tabellen så här:
SELECT LENGTH(ArtistName) ALTER TABLE Artists MODIFY COLUMN ArtistName VARCHAR(255) CHARSET ucs2;
Om vi nu frågar det igen:
SELECT LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Resultat:
+--------------------+ | LENGTH(ArtistName) | +--------------------+ | 6 | +--------------------+
Avslutande ämnen
Den LENGTH() funktion räknar efterföljande blanksteg (som blanksteg i slutet av strängen). Så om vi lägger till ett mellanslag i slutet av det första exemplet får vi följande resultat:
SELECT LENGTH('Lit ');
Resultat:
+----------------+
| LENGTH('Lit ') |
+----------------+
| 4 |
+----------------+
Leading Blanks
Vi får samma resultat med inledande blanksteg (t.ex. mellanslag i början av strängen):
SELECT LENGTH(' Lit');
Resultat:
+----------------+
| LENGTH(' Lit') |
+----------------+
| 4 |
+----------------+
Transact-SQL (för SQL Server, Azure) har en liknande funktion, men i T-SQL heter den DATALENGTH() .