sql >> Databasteknik >  >> RDS >> Mysql

Vad är CHAR_LENGTH() i MySQL?

I MySQL, CHAR_LENGTH() funktion returnerar längden på en sträng, mätt i tecken. MySQL har också CHARACTER_LENGTH() , som är en synonym för CHAR_LENGTH() .

Här är ett exempel:

SELECT CHAR_LENGTH('Lit');

Och här är resultatet:

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

Avslutande ämnen

Observera att CHAR_LENGTH() inkluderar efterföljande ämnen (t.ex. mellanslag i slutet av strängen) i sina beräkningar.

Så om vi lägger till ett mellanslag i slutet av föregående exempel:

SELECT CHAR_LENGTH('Lit ');

Här är resultatet:

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

Men vi kan alltid ta bort det efterföljande utrymmet genom att lägga till TRIM() funktion i mixen:

SELECT CHAR_LENGTH(TRIM('Lit '));

Här är resultatet:

+---------------------------+
| CHAR_LENGTH(TRIM('Lit ')) |
+---------------------------+
|                         3 |
+---------------------------+

Leading Blanks

Det är samma sak med ledande blanks. Så om vi lägger till ett mellanslag i starten av strängen istället:

SELECT CHAR_LENGTH(' Lit');

Vi får samma resultat:

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

Datatyper

Det spelar ingen roll vilken datatyp strängen lagras som, den kommer fortfarande att returnera samma resultat. Detta är i motsats till LENGTH() funktion, som returnerar dubbla antalet tecken i de fall data lagras som en Unicode-sträng.

I följande exempel använder kolumnen ArtistName varchar(255) :

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

Här är resultatet:

+-------------------------+
| CHAR_LENGTH(ArtistName) |
+-------------------------+
|                       3 |
+-------------------------+

Och om vi ändrar ArtistName kolumn för att använda Unicode:

ALTER TABLE Artists 
MODIFY COLUMN ArtistName VARCHAR(255) unicode;

Och kör samma fråga igen:

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

Vi får fortfarande samma resultat:

+-------------------------+
| CHAR_LENGTH(ArtistName) |
+-------------------------+
|                       3 |
+-------------------------+

Men om vi hade använt LENGTH() funktion, skulle resultatet bli 6. Detta beror på att Unicode-strängar lagrar 2 byte per tecken och LENGTH() funktion returnerar längden mätt i byte.


  1. Hur skriver jag data från R till PostgreSQL-tabeller med en autoinkrementerande primärnyckel?

  2. PostgreSQL och C# datatyper

  3. Otydlig matchning med T-SQL

  4. Hur DB_NAME() fungerar i SQL Server