W MySQL funkcja CHARACTER_LENGTH() funkcja zwraca długość ciągu mierzoną w znakach.
CHARACTER_LENGTH() jest synonimem CHAR_LENGTH() funkcja.
Składnia
Składnia wygląda tak:
CHARACTER_LENGTH(str)
Gdzie str to ciąg, dla którego zostanie zwrócona długość.
Przykład 1 – Podstawowe użycie
Oto przykład podstawowego użycia:
SELECT CHARACTER_LENGTH('Cat');
A oto wynik:
+-------------------------+
| CHARACTER_LENGTH('Cat') |
+-------------------------+
| 3 |
+-------------------------+
Przykład 2 – Końcowe blanki
Zauważ, że CHARACTER_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 CHARACTER_LENGTH('Cat');
Oto wynik:
+--------------------------+
| CHARACTER_LENGTH('Cat ') |
+--------------------------+
| 4 |
+--------------------------+
Ale zawsze możemy usunąć tę końcową spację za pomocą funkcji TRIM() funkcja lub RTRIM() funkcja:
SELECT
CHARACTER_LENGTH(TRIM('Cat ')) AS 'TRIM',
CHARACTER_LENGTH(RTRIM('Cat ')) AS 'RTRIM';
Oto wynik:
+------+-------+ | TRIM | RTRIM | +------+-------+ | 3 | 3 | +------+-------+
Przykład 3 – Wiodące spacje
Ta sama koncepcja dotyczy wiodących półfabrykatów. Możesz użyć opcji TRIM lub LTRIM :
SELECT
CHARACTER_LENGTH(TRIM(' Cat')) AS 'TRIM',
CHARACTER_LENGTH(LTRIM(' Cat')) AS 'LTRIM';
Wynik:
+------+-------+ | TRIM | LTRIM | +------+-------+ | 3 | 3 | +------+-------+
Przykład 4 – Typy danych
Nie ma znaczenia, jaki typ danych jest przechowywany w ciągu, nadal zwróci ten sam wynik. 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 CHARACTER_LENGTH(ArtistName) Result FROM Artists WHERE ArtistName = 'Lit';
Oto wynik:
+--------+ | Result | +--------+ | 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 CHARACTER_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Nadal otrzymujemy ten sam wynik:
+--------+ | Result | +--------+ | 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.