sql >> Databasteknik >  >> RDS >> Mysql

Vad är LENGTH() i MySQL?

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


  1. Hur man ändrar text till gemener i SQL

  2. VarBinary vs Image SQL Server Datatyp för att lagra binära data?

  3. Hur man skapar en oracle sql script spool fil

  4. Felsökning av SQL Server-replikering