В MariaDB, LENGTH() е вградена функция низ, която връща дължината на дадения низ аргумент.
Когато е в режим по подразбиране, дължината на низа се измерва в байтове. Но когато е в режим на Oracle, се измерва в знаци.
Синтаксис
Синтаксисът е така:
LENGTH(str)
Където str е низът, за който ще бъде върната дължината.
Пример
Ето един основен пример:
SELECT LENGTH('café'); Резултат:
+-----------------+
| LENGTH('café') |
+-----------------+
| 5 |
+-----------------+
В този случай низът е дълъг четири знака, но LENGTH() върна 5 .
Това е така, защото последният знак използва два байта и аз използвам SQL режима по подразбиране (моят sql_mode=DEFAULT ). Когато е в SQL режим по подразбиране, LENGTH() връща броя на байтовете.
Режим Oracle
Превключването към режим на Oracle води до LENGTH() връща само броя на знаците в низа (за разлика от броя на байтовете).
Нека превключим нашата сесия в режим на Oracle:
SET SESSION sql_mode='ORACLE';
И сега нека изпълним предишния LENGTH() отново пример:
SELECT LENGTH('café'); Резултат:
+-----------------+
| LENGTH('café') |
+-----------------+
| 4 |
+-----------------+ Този път връща броя на знаците (4) вместо броя на байтовете (5).
Когато сте в режим на Oracle, LENGTH() връща същия резултат като CHAR_LENGTH() и неговия синоним, CHARACTER_LENGTH() .
Сравнение с CHAR_LENGTH() и BIT_LENGTH()
Нека се върнем към режима по подразбиране:
SET SESSION sql_mode=DEFAULT;
Ето едно бързо сравнение между LENGTH() когато е в режим по подразбиране, CHAR_LENGTH() и BIT_LENGTH() който връща броя на битовете в низ:
SELECT
LENGTH('อ'),
CHAR_LENGTH('อ'),
BIT_LENGTH('อ'); Резултат:
+---------------+--------------------+-------------------+
| LENGTH('อ') | CHAR_LENGTH('อ') | BIT_LENGTH('อ') |
+---------------+--------------------+-------------------+
| 3 | 1 | 24 |
+---------------+--------------------+-------------------+
Този тайландски знак (อ ) използва 3 байта и следователно LENGTH() връща 3 .
CHAR_LENGTH() връща 1 , защото все още е само един знак и BIT_LENGTH() връща броя на битовете (24 ).
Отново, ако бяхме в режим на Oracle, LENGTH() би върнал същото като CHAR_LENGTH() .
Не-низови
Ако аргументът не е низ, той се преобразува в низ.
Ето още един пример, който използва число:
SELECT LENGTH(1234); Резултат:
+--------------+ | LENGTH(1234) | +--------------+ | 4 | +--------------+
Нулеви аргументи
Предаването на null връща null :
SELECT LENGTH(null); Резултат:
+--------------+ | LENGTH(null) | +--------------+ | NULL | +--------------+
Липсващ аргумент
Извикване на LENGTH() без подаване на аргумент води до грешка:
SELECT LENGTH(); Резултат:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LENGTH'