sql >> Database teknologi >  >> RDS >> Mysql

Hvad er LENGTH() i MySQL?

En af de mange funktioner i MySQL er LENGTH() funktion, som returnerer længden af ​​en streng, målt i bytes.

Eksempel:

SELECT LENGTH('Lit');

Resultat:

+---------------+
| LENGTH('Lit') |
+---------------+
|             3 |
+---------------+

Dette er et simpelt eksempel, og resultatet er det samme, som hvis vi havde brugt CHAR_LENGTH() fungere. Men LENGTH() funktion kan returnere forskellige resultater afhængigt af datatypen.

Datatyper

Når du forespørger i en database, vises LENGTH() funktion kan returnere et andet resultat, afhængigt af datatypen. Unicode-strenge returnerer det dobbelte antal bytes. UTF-8-strenge kan variere.

Her er et eksempel på brug af UTF-8:

SELECT LENGTH(_utf8 '€');

Resultater:

+---------------------+
| LENGTH(_utf8 '€')   |
+---------------------+
|                   3 |
+---------------------+

I dette tilfælde bruger eurotegnet 3 bytes.

I det følgende eksempel forespørger vi en database. I dette tilfælde er ArtistName kolonne bruger varchar(255) datatype:

SELECT LENGTH(ArtistName) 
FROM Artists
WHERE ArtistName = 'Lit';

Så resultatet ser således ud:

+--------------------+
| LENGTH(ArtistName) |
+--------------------+
|                  3 |
+--------------------+

Men hvis vi ændrer kolonnen til ucs2 , vil hvert tegn være repræsenteret af en 2 byte Unicode-kode, og derfor vil resultatet være anderledes.

For at demonstrere kan vi ændre tabellen sådan her:

SELECT LENGTH(ArtistName) 
ALTER TABLE Artists 
MODIFY COLUMN ArtistName VARCHAR(255) CHARSET ucs2;

Hvis vi nu spørger det igen:

SELECT LENGTH(ArtistName) 
FROM Artists
WHERE ArtistName = 'Lit';

Resultat:

+--------------------+
| LENGTH(ArtistName) |
+--------------------+
|                  6 |
+--------------------+

Tilsluttede emner

 LENGTH() funktion tæller efterstillede blanktegn (såsom mellemrum for enden af ​​strengen). Så hvis vi tilføjer et mellemrum til slutningen af ​​det første eksempel, får vi følgende resultat:

SELECT LENGTH('Lit');

Resultat:

+----------------+
| LENGTH('Lit ') |
+----------------+
|              4 |
+----------------+

Leading Blanks

Vi får det samme resultat med indledende tomme felter (f.eks. mellemrum i begyndelsen af ​​strengen):

SELECT LENGTH(' Lit');

Resultat:

+----------------+
| LENGTH(' Lit') |
+----------------+
|              4 |
+----------------+

Transact-SQL (til SQL Server, Azure) har en lignende funktion, men i T-SQL hedder det  DATALENGTH() .


  1. Sådan bruges SQL Server AlwaysOn-funktioner

  2. Brug af arbejdsmappe til kildekontroldatabase

  3. Sådan får du den sidste dag i måneden i T-SQL

  4. Sådan trækkes data fra databasen og se dem som en ListView