W MariaDB, LENGTHB()
jest wbudowaną funkcją łańcuchową, która zwraca długość podanego argumentu łańcuchowego, mierzoną w bajtach.
Składnia
Składnia wygląda tak:
LENGTHB(str)
Gdzie str
to ciąg, dla którego zostanie zwrócona długość.
Przykład
Oto podstawowy przykład:
SELECT LENGTHB('café');
Wynik:
+------------------+ | LENGTHB('café') | +------------------+ | 5 | +------------------+
W tym przypadku ciąg miał cztery znaki, ale LENGTHB()
zwrócono 5
. Dzieje się tak, ponieważ ostatni znak zajmuje dwa bajty.
Porównanie z CHAR_LENGTH()
i BIT_LENGTH()
Oto szybkie porównanie między LENGTHB()
, CHAR_LENGTH()
(co zwraca liczbę znaków w ciągu) i BIT_LENGTH()
(co zwraca liczbę bitów w ciągu):
SELECT
LENGTHB('อ'),
CHAR_LENGTH('อ'),
BIT_LENGTH('อ');
Wynik:
+----------------+--------------------+-------------------+ | LENGTHB('อ') | CHAR_LENGTH('อ') | BIT_LENGTH('อ') | +----------------+--------------------+-------------------+ | 3 | 1 | 24 | +----------------+--------------------+-------------------+
Ten znak tajski (อ
) używa 3 bajtów, a zatem LENGTHB()
zwraca 3
.
CHAR_LENGTH()
zwraca 1
, ponieważ to wciąż tylko jeden znak, a BIT_LENGTH()
zwraca liczbę bitów (24
).
Nie-Strunowe
Jeśli argument nie jest łańcuchem, jest konwertowany na łańcuch.
Oto kolejny przykład z liczbą:
SELECT LENGTHB(1234);
Wynik:
+---------------+ | LENGTHB(1234) | +---------------+ | 4 | +---------------+
Argumenty zerowe
Przekazywanie null
zwraca null
:
SELECT LENGTHB(null);
Wynik:
+---------------+ | LENGTHB(null) | +---------------+ | NULL | +---------------+
Brakujący argument
Wywołanie LENGTHB()
bez przekazania argumentu powoduje błąd:
SELECT LENGTHB();
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LENGTHB'
LENGTHB()
vs LENGTH()
LENGTHB()
funkcja jest podobna do LENGTH()
funkcja, z wyjątkiem tego, jak działa w trybie Oracle.
LENGTHB()
funkcja działa w ten sam sposób, niezależnie od tego, w jakim trybie się znajduje (tzn. zwraca liczbę bajtów w ciągu).
LENGTH()
z drugiej strony zachowuje się inaczej, w zależności od tego, czy jest w trybie Oracle, czy w trybie domyślnym.
W szczególności w trybie domyślnym LENGTH()
mierzy ciąg w bajtach. Ale w trybie Oracle mierzy ciąg w znakach .