sql >> Database >  >> RDS >> Mysql

Wat is LENGTH() in MySQL?

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() .


  1. Tips voor het bewaken van MariaDB-replicatie met ClusterControl

  2. Hoe te groeperen op maand in MySQL

  3. Hoe werkt COPY en waarom is het zoveel sneller dan INSERT?

  4. UNION- en LIMIT-bewerkingen combineren in MySQL-query