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

Sådan fungerer CHARACTER_LENGTH()-funktionen i MySQL

I MySQL er CHARACTER_LENGTH() funktion returnerer længden af ​​en streng, målt i tegn.

CHARACTER_LENGTH() er et synonym for CHAR_LENGTH() funktion.

Syntaks

Syntaksen ser sådan ud:

CHARACTER_LENGTH(str)

Hvor str er den streng, som længden vil blive returneret for.

Eksempel 1 – Grundlæggende brug

Her er et eksempel på den grundlæggende brug:

SELECT CHARACTER_LENGTH('Cat');

Og her er resultatet:

+-------------------------+
| CHARACTER_LENGTH('Cat') |
+-------------------------+
|                       3 |
+-------------------------+

Eksempel 2 – Efterfølgende blanke

Bemærk, at CHARACTER_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 CHARACTER_LENGTH('Cat ');

Her er resultatet:

+--------------------------+
| CHARACTER_LENGTH('Cat ') |
+--------------------------+
|                        4 |
+--------------------------+

Men vi kan altid fjerne det efterfølgende mellemrum ved at bruge enten TRIM() funktion eller RTRIM() funktion:

SELECT 
  CHARACTER_LENGTH(TRIM('Cat ')) AS 'TRIM',
  CHARACTER_LENGTH(RTRIM('Cat ')) AS 'RTRIM';

Her er resultatet:

+------+-------+
| TRIM | RTRIM |
+------+-------+
|    3 |     3 |
+------+-------+

Eksempel 3 – Leading Blanks

Det samme koncept gælder for førende emner. Du kan bruge enten TRIM eller LTRIM :

SELECT 
  CHARACTER_LENGTH(TRIM(' Cat')) AS 'TRIM',
  CHARACTER_LENGTH(LTRIM(' Cat')) AS 'LTRIM';

Resultat:

+------+-------+
| TRIM | LTRIM |
+------+-------+
|    3 |     3 |
+------+-------+

Eksempel 4 – Datatyper

Det er lige meget, hvilken datatype strengen er gemt som, den vil stadig returnere det samme resultat. 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 CHARACTER_LENGTH(ArtistName) Result
FROM Artists
WHERE ArtistName = 'Lit';

Her er resultatet:

+--------+
| Result |
+--------+
|      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 CHARACTER_LENGTH(ArtistName) 
FROM Artists
WHERE ArtistName = 'Lit';

Vi får stadig det samme resultat:

+--------+
| Result |
+--------+
|      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. Returner alle fremmednøgler, der refererer til en given tabel i SQL Server

  2. SQLite - Importer data fra en CSV-fil

  3. Hvad er kardinalitet i MySQL?

  4. Optimering af overlappende forespørgsler Del 1:Introduktion og forbedret T-SQL-løsning