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'