W MariaDB, LENGTH() jest wbudowaną funkcją łańcuchową, która zwraca długość podanego argumentu łańcuchowego.
W trybie domyślnym długość ciągu jest mierzona w bajtach. Ale w trybie Oracle jest to mierzone w znakach.
Składnia
Składnia wygląda tak:
LENGTH(str)
Gdzie str to ciąg, dla którego zostanie zwrócona długość.
Przykład
Oto podstawowy przykład:
SELECT LENGTH('café'); Wynik:
+-----------------+
| LENGTH('café') |
+-----------------+
| 5 |
+-----------------+
W tym przypadku ciąg miał cztery znaki, ale LENGTH() zwrócono 5 .
Dzieje się tak, ponieważ ostatni znak używa dwóch bajtów, a ja używam domyślnego trybu SQL (mój sql_mode=DEFAULT ). W domyślnym trybie SQL LENGTH() zwraca liczbę bajtów.
Tryb Oracle
Przejście do trybu Oracle powoduje LENGTH() zwraca tylko liczbę znaków w ciągu (w przeciwieństwie do liczby bajtów).
Przełączmy naszą sesję w tryb Oracle:
SET SESSION sql_mode='ORACLE';
A teraz uruchommy poprzednią LENGTH() przykład ponownie:
SELECT LENGTH('café'); Wynik:
+-----------------+
| LENGTH('café') |
+-----------------+
| 4 |
+-----------------+ Tym razem zwraca liczbę znaków (4) zamiast liczby bajtów (5).
W trybie Oracle LENGTH() zwraca ten sam wynik co CHAR_LENGTH() i jego synonim, CHARACTER_LENGTH() .
Porównanie z CHAR_LENGTH() i BIT_LENGTH()
Wróćmy do trybu domyślnego:
SET SESSION sql_mode=DEFAULT;
Oto szybkie porównanie między LENGTH() w trybie domyślnym CHAR_LENGTH() i BIT_LENGTH() który zwraca liczbę bitów w ciągu:
SELECT
LENGTH('อ'),
CHAR_LENGTH('อ'),
BIT_LENGTH('อ'); Wynik:
+---------------+--------------------+-------------------+
| LENGTH('อ') | CHAR_LENGTH('อ') | BIT_LENGTH('อ') |
+---------------+--------------------+-------------------+
| 3 | 1 | 24 |
+---------------+--------------------+-------------------+
Ten znak tajski (อ ) używa 3 bajtów, a zatem LENGTH() zwraca 3 .
CHAR_LENGTH() zwraca 1 , ponieważ to wciąż tylko jeden znak, a BIT_LENGTH() zwraca liczbę bitów (24 ).
Ponownie, gdybyśmy byli w trybie Oracle, LENGTH() zwróciłby to samo co CHAR_LENGTH() .
Nie-Strunowe
Jeśli argument nie jest łańcuchem, jest konwertowany na łańcuch.
Oto kolejny przykład z liczbą:
SELECT LENGTH(1234); Wynik:
+--------------+ | LENGTH(1234) | +--------------+ | 4 | +--------------+
Argumenty zerowe
Przekazywanie null zwraca null :
SELECT LENGTH(null); Wynik:
+--------------+ | LENGTH(null) | +--------------+ | NULL | +--------------+
Brakujący argument
Wywołanie LENGTH() bez przekazania argumentu powoduje błąd:
SELECT LENGTH(); Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LENGTH'