W MariaDB CHARACTER_LENGTH()
jest wbudowaną funkcją łańcuchową, która zwraca długość podanego argumentu łańcuchowego, mierzoną w znakach.
CHARACTER_LENGTH()
jest właściwie synonimem CHAR_LENGTH()
, więc możesz użyć obu.
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
Oto podstawowy przykład:
SELECT CHARACTER_LENGTH('Cat');
Wynik:
+-------------------------+ | CHARACTER_LENGTH('Cat') | +-------------------------+ | 3 | +-------------------------+
W tym przypadku ciąg miał długość trzech znaków, więc otrzymaliśmy 3
.
Nie-Strunowe
Jeśli argument nie jest łańcuchem, jest konwertowany na łańcuch.
Oto kolejny przykład z liczbą:
SELECT CHARACTER_LENGTH(1234);
Wynik:
+------------------------+ | CHARACTER_LENGTH(1234) | +------------------------+ | 4 | +------------------------+
Porównanie z CHAR_LENGTH()
Jak wspomniano, CHARACTER_LENGTH()
jest synonimem CHAR_LENGTH()
. Oto porównanie z CHAR_LENGTH()
:
SELECT
CHARACTER_LENGTH(1234),
CHAR_LENGTH(1234);
Wynik:
+------------------------+-------------------+ | CHARACTER_LENGTH(1234) | CHAR_LENGTH(1234) | +------------------------+-------------------+ | 4 | 4 | +------------------------+-------------------+
Znaki wielobajtowe
CHARACTER_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 CHARACTER_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
CHARACTER_LENGTH('อ'),
LENGTH('อ'),
BIT_LENGTH('อ');
Wynik:
+-------------------------+---------------+-------------------+ | CHARACTER_LENGTH('อ') | LENGTH('อ') | BIT_LENGTH('อ') | +-------------------------+---------------+-------------------+ | 1 | 3 | 24 | +-------------------------+---------------+-------------------+
Ten znak tajski (อ
) wykorzystuje 3 bajty. CHARACTER_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 CHARACTER_LENGTH()
i zwrócił 1
.
Argumenty zerowe
Przekazywanie null
zwraca null
:
SELECT CHARACTER_LENGTH(null);
Wynik:
+------------------------+ | CHARACTER_LENGTH(null) | +------------------------+ | NULL | +------------------------+
Brakujący argument
Wywołanie CHARACTER_LENGTH()
bez przekazania argumentu powoduje błąd:
SELECT CHARACTER_LENGTH();
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'CHARACTER_LENGTH'