Последнее обновление
LENGTH
Описание
Функция LENGTH возвращает длину строки в байтах. Эта функция вычисляет количество байтов, которое занимает строка в кодировке UTF-8, а не количество символов.
Обратите внимание на отличие от CHAR_LENGTH:
LENGTH()возвращает количество байтовCHAR_LENGTH()иCHARACTER_LENGTH()возвращают количество символов- Для символов ASCII количество байтов равно количеству символов
- Для многобайтовых символов (например, китайских иероглифов и эмодзи) количество байтов обычно превышает количество символов
Псевдоним
OCTET_LENGTH()
Синтаксис
LENGTH(<str>)
Параметры
| Параметр | Описание |
|---|---|
<str> | Строка, длину которой в байтах требуется вычислить. Тип: VARCHAR |
Возвращаемое значение
Возвращает значение типа INT, представляющее длину строки в байтах.
Особые случаи:
- Если параметр равен NULL, возвращает NULL
- Для пустой строки возвращает 0
- Результат представляет собой количество байтов в кодировке UTF-8
Примеры
- Символы ASCII (количество байтов = количество символов)
SELECT LENGTH('abc'), CHAR_LENGTH('abc');
+---------------+--------------------+
| LENGTH('abc') | CHAR_LENGTH('abc') |
+---------------+--------------------+
| 3 | 3 |
+---------------+--------------------+
- Китайские иероглифы (количество байтов > количество символов)
SELECT LENGTH('中国'), CHAR_LENGTH('中国');
+------------------+---------------------+
| LENGTH('中国') | CHAR_LENGTH('中国') |
+------------------+---------------------+
| 6 | 2 |
+------------------+---------------------+
- Обработка значения NULL
SELECT LENGTH(NULL);
+--------------+
| LENGTH(NULL) |
+--------------+
| NULL |
+--------------+
- Пустая строка
SELECT LENGTH('');
+------------+
| LENGTH('') |
+------------+
| 0 |
+------------+
- Сочетание символов разных типов
SELECT LENGTH('Hello世界'), CHAR_LENGTH('Hello世界');
+-----------------------+----------------------------+
| LENGTH('Hello世界') | CHAR_LENGTH('Hello世界') |
+-----------------------+----------------------------+
| 11 | 7 |
+-----------------------+----------------------------+
- Экранированные символы и пробелы ASCII
SELECT LENGTH('\t\n\r'), LENGTH(' ');
+------------------+--------------+
| LENGTH('\t\n\r') | LENGTH(' ') |
+------------------+--------------+
| 3 | 2 |
+------------------+--------------+
- Многобайтовые символы UTF-8: сравнение длины в байтах и количества символов
SELECT LENGTH('ṭṛì'), CHAR_LENGTH('ṭṛì');
+--------------------+-------------------------+
| LENGTH('ṭṛì') | CHAR_LENGTH('ṭṛì') |
+--------------------+-------------------------+
| 8 | 3 |
+--------------------+-------------------------+
- Эмодзи (обычно 4 байта на глиф)
SELECT LENGTH('😀😁'), CHAR_LENGTH('😀😁');
+--------------------+-------------------------+
| LENGTH('😀😁') | CHAR_LENGTH('😀😁') |
+--------------------+-------------------------+
| 8 | 2 |
+--------------------+-------------------------+
- Строки из цифр
SELECT LENGTH('12345'), CHAR_LENGTH('12345');
+-----------------+----------------------+
| LENGTH('12345') | CHAR_LENGTH('12345') |
+-----------------+----------------------+
| 5 | 5 |
+-----------------+----------------------+