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

Hvad er CHAR_LENGTH() i MySQL?

I MySQL er CHAR_LENGTH() funktion returnerer længden af ​​en streng, målt i tegn. MySQL har også CHARACTER_LENGTH() , som er et synonym for CHAR_LENGTH() .

Her er et eksempel:

SELECT CHAR_LENGTH('Lit');

Og her er resultatet:

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

Tilsluttede emner

Bemærk, at CHAR_LENGTH() inkluderer efterfølgende blanks (f.eks. mellemrum for enden af ​​strengen) i sine beregninger.

Så hvis vi tilføjer et mellemrum til slutningen af ​​det forrige eksempel:

SELECT CHAR_LENGTH('Lit');

Her er resultatet:

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

Men vi kan altid fjerne det efterfølgende mellemrum ved at tilføje TRIM() funktion i blandingen:

SELECT CHAR_LENGTH(TRIM('Lit '));

Her er resultatet:

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

Leading Blanks

Det er det samme med ledende blanke. Så hvis vi tilføjer et mellemrum til start af strengen i stedet for:

SELECT CHAR_LENGTH(' Lit');

Vi får samme resultat:

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

Datatyper

Det er lige meget, hvilken datatype strengen er gemt som, den vil stadig returnere de samme resultater. Dette er i modsætning til LENGTH() funktion, som returnerer det dobbelte antal tegn i tilfælde, hvor dataene gemmes som en Unicode-streng.

I det følgende eksempel bruger kolonnen ArtistName varchar(255) :

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

Her er resultatet:

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

Og hvis vi ændrer ArtistName kolonne for at bruge Unicode:

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

Og kør den samme forespørgsel igen:

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

Vi får stadig det samme resultat:

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

Men hvis vi havde brugt LENGTH() funktion, ville resultatet være 6. Dette skyldes, at Unicode-strenge gemmer 2 bytes pr. tegn, og LENGTH() funktion returnerer længden målt i bytes.


  1. PayPal ODBC-driver

  2. Bruger jeg JDBC Connection Pooling?

  3. Sådan aktiverer du CDC på sæt af tabeller ELLER aktiverer på alle tabeller i en database i SQL Server - SQL Server Tutorial

  4. Opdeling af en tabel med milliardrækker med fodbolddata ved hjælp af datakontekst