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.