Една от многото функции в MySQL е LENGTH() функция, която връща дължината на низ, измерена в байтове.
Пример:
SELECT LENGTH('Lit');
Резултат:
+---------------+
| LENGTH('Lit') |
+---------------+
| 3 |
+---------------+
Това е прост пример и резултатът е същият, както ако използвахме CHAR_LENGTH() функция. Въпреки това, LENGTH() функцията може да връща различни резултати в зависимост от типа данни.
Типове данни
Когато правите заявка към база данни, LENGTH() функцията може да върне различен резултат в зависимост от типа данни. Unicode низовете връщат двоен брой байтове. UTF-8 низовете могат да варират.
Ето пример за използване на UTF-8:
SELECT LENGTH(_utf8 '€');
Резултати:
+---------------------+ | LENGTH(_utf8 '€') | +---------------------+ | 3 | +---------------------+
В този случай знакът за евро използва 3 байта.
В следващия пример правим заявка към база данни. В този случай ArtistName колоната използва varchar(255) тип данни:
SELECT LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Така че резултатът изглежда така:
+--------------------+ | LENGTH(ArtistName) | +--------------------+ | 3 | +--------------------+
Ако обаче променим колоната на ucs2 , всеки знак ще бъде представен с 2 байтов Unicode код и следователно резултатът ще бъде различен.
За да демонстрираме, можем да променим таблицата по следния начин:
SELECT LENGTH(ArtistName) ALTER TABLE Artists MODIFY COLUMN ArtistName VARCHAR(255) CHARSET ucs2;
Сега, ако го потърсим отново:
SELECT LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Резултат:
+--------------------+ | LENGTH(ArtistName) | +--------------------+ | 6 | +--------------------+
Завършващи празни места
LENGTH() функцията брои крайните празни места (като интервали в края на низа). Така че, ако добавим интервал в края на първия пример, получаваме следния резултат:
SELECT LENGTH('Lit ');
Резултат:
+----------------+
| LENGTH('Lit ') |
+----------------+
| 4 |
+----------------+
Водещи празни места
Получаваме същия резултат с водещи празни места (например интервали в началото на низа):
SELECT LENGTH('Lit ');
Резултат:
+----------------+
| LENGTH('Lit ') |
+----------------+
| 4 |
+----------------+
Transact-SQL (за SQL Server, Azure) има подобна функция, но в T-SQL тя се нарича DATALENGTH() .