Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Was ist CHAR_LENGTH() in MySQL?

In MySQL die CHAR_LENGTH() Die Funktion gibt die Länge einer Zeichenfolge zurück, gemessen in Zeichen. MySQL hat auch CHARACTER_LENGTH() , was ein Synonym für CHAR_LENGTH() ist .

Hier ist ein Beispiel:

SELECT CHAR_LENGTH('Lit');

Und hier ist das Ergebnis:

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

Nachgestellte Leerzeichen

Beachten Sie, dass CHAR_LENGTH() schließt abschließende Leerzeichen (z. B. Leerzeichen am Ende der Zeichenkette) in seine Berechnungen ein.

Wenn wir also am Ende des vorherigen Beispiels ein Leerzeichen hinzufügen:

SELECT CHAR_LENGTH('Lit ');

Hier ist das Ergebnis:

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

Aber wir können dieses abschließende Leerzeichen jederzeit entfernen, indem wir TRIM() hinzufügen Funktion in den Mix:

SELECT CHAR_LENGTH(TRIM('Lit '));

Hier ist das Ergebnis:

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

Führende Leerzeichen

Genauso verhält es sich mit führenden Leerzeichen. Also, wenn wir ein Leerzeichen zum Start hinzufügen des Strings stattdessen:

SELECT CHAR_LENGTH(' Lit');

Wir erhalten dasselbe Ergebnis:

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

Datentypen

Es spielt keine Rolle, als welcher Datentyp die Zeichenfolge gespeichert wird, sie liefert immer noch die gleichen Ergebnisse. Dies steht im Gegensatz zu LENGTH() Funktion, die die doppelte Anzahl von Zeichen zurückgibt, wenn die Daten als Unicode-String gespeichert werden.

Im folgenden Beispiel verwendet die ArtistName-Spalte varchar(255) :

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

Hier ist das Ergebnis:

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

Und wenn wir den ArtistName ändern Spalte zur Verwendung von Unicode:

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

Und führen Sie dieselbe Abfrage erneut aus:

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

Wir erhalten immer noch das gleiche Ergebnis:

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

Wenn wir jedoch die LENGTH() verwendet hätten -Funktion, wäre das Ergebnis 6. Dies liegt daran, dass Unicode-Strings 2 Bytes pro Zeichen und die LENGTH() speichern Funktion gibt die Länge gemessen in Bytes zurück.