W MySQL funkcja CHAR_LENGTH() funkcja zwraca długość ciągu mierzoną w znakach. MySQL ma również CHARACTER_LENGTH() , który jest synonimem CHAR_LENGTH() .
Oto przykład:
SELECT CHAR_LENGTH('Lit');
A oto wynik:
+--------------------+
| CHAR_LENGTH('Lit') |
+--------------------+
| 3 |
+--------------------+
Puste końcowe
Zauważ, że CHAR_LENGTH() uwzględnia w swoich obliczeniach końcowe spacje (np. spacje na końcu ciągu).
Więc jeśli dodamy spację na końcu poprzedniego przykładu:
SELECT CHAR_LENGTH('Lit ');
Oto wynik:
+---------------------+
| CHAR_LENGTH('Lit ') |
+---------------------+
| 4 |
+---------------------+
Ale zawsze możemy usunąć tę końcową spację, dodając TRIM() funkcja w miksie:
SELECT CHAR_LENGTH(TRIM('Lit '));
Oto wynik:
+---------------------------+
| CHAR_LENGTH(TRIM('Lit ')) |
+---------------------------+
| 3 |
+---------------------------+
Białe puste miejsca
Tak samo jest z wiodącymi blankami. Jeśli więc dodamy spację do początku zamiast tego ciągu:
SELECT CHAR_LENGTH(' Lit');
Otrzymujemy ten sam wynik:
+---------------------+
| CHAR_LENGTH(' Lit') |
+---------------------+
| 4 |
+---------------------+
Typy danych
Nie ma znaczenia, jaki typ danych jest przechowywany w ciągu, nadal zwróci te same wyniki. Jest to w przeciwieństwie do LENGTH() funkcja, która zwróci podwójną liczbę znaków w przypadkach, gdy dane są przechowywane jako ciąg Unicode.
W poniższym przykładzie kolumna ArtistName używa varchar(255) :
SELECT CHAR_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Oto wynik:
+-------------------------+ | CHAR_LENGTH(ArtistName) | +-------------------------+ | 3 | +-------------------------+
A jeśli zmodyfikujemy ArtistName kolumna do używania Unicode:
ALTER TABLE Artists MODIFY COLUMN ArtistName VARCHAR(255) unicode;
I ponownie uruchom to samo zapytanie:
SELECT CHAR_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Nadal otrzymujemy ten sam wynik:
+-------------------------+ | CHAR_LENGTH(ArtistName) | +-------------------------+ | 3 | +-------------------------+
Jednakże, gdybyśmy użyli LENGTH() funkcja, wynik byłby 6. Dzieje się tak, ponieważ ciągi Unicode przechowują 2 bajty na znak, a LENGTH() funkcja zwraca długość mierzoną w bajtach.