Една от многото функции в 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()
.