W MariaDB, CHAR_LENGTH()
to wbudowana funkcja łańcuchowa, która zwraca długość podanego argumentu łańcuchowego, mierzoną w znakach.
Składnia
Składnia wygląda tak:
CHAR_LENGTH(str)
Gdzie str
to ciąg, dla którego zostanie zwrócona długość.
Przykład
Oto podstawowy przykład:
SELECT CHAR_LENGTH('Splash');
Wynik:
+-----------------------+ | CHAR_LENGTH('Splash') | +-----------------------+ | 6 | +-----------------------+
Znaki wielobajtowe
CHAR_LENGTH()
funkcja liczy każdy znak jako pojedynczy znak, niezależnie od tego, ile bajtów używa. Dlatego znaki, które używają dwóch, trzech, a nawet czterech bajtów, będą nadal liczone jako jeden znak.
Jest to w przeciwieństwie do funkcji takich jak LENGTH()
, który zwraca liczbę bajtów (chyba że jest w trybie Oracle, w takim przypadku robi to samo co CHAR_LENGTH()
– zwraca liczbę znaków). Jest to również w przeciwieństwie do funkcji takich jak BIT_LENGTH()
który zwraca liczbę bitów w ciągu.
Oto przykład porównujący te funkcje:
SELECT
CHAR_LENGTH('©'),
LENGTH('©'),
BIT_LENGTH('©');
Wynik:
+-------------------+--------------+------------------+ | CHAR_LENGTH('©') | LENGTH('©') | BIT_LENGTH('©') | +-------------------+--------------+------------------+ | 1 | 2 | 16 | +-------------------+--------------+------------------+
Symbol praw autorskich (©
) używa dwóch bajtów. CHAR_LENGTH()
zwraca 1, ponieważ wciąż jest to tylko jeden znak. LENGTH()
i BIT_LENGTH()
z drugiej strony zwróć odpowiednio liczbę bajtów i bitów.
Ten przykład został wykonany przy użyciu domyślnego SQL_MODE
. Jak wspomniano, gdyby był w trybie Oracle, LENGTH()
zachowywałby się jak CHAR_LENGTH()
i zwrócił 1
.
Argumenty zerowe
Przekazywanie null
zwraca null
:
SELECT CHAR_LENGTH(null);
Wynik:
+-------------------+ | CHAR_LENGTH(null) | +-------------------+ | NULL | +-------------------+
Brakujący argument
Wywołanie CHAR_LENGTH()
bez przekazania argumentu powoduje błąd:
SELECT CHAR_LENGTH();
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'CHAR_LENGTH'
Zobacz także CHARACTER_LENGTH()
funkcja, która jest synonimem CHAR_LENGTH()
.