В MySQL, CHAR_LENGTH()
функцията връща дължината на низ, измерена в знаци. MySQL също има CHARACTER_LENGTH()
, което е синоним на CHAR_LENGTH()
.
Ето един пример:
SELECT CHAR_LENGTH('Lit');
И ето резултата:
+--------------------+ | CHAR_LENGTH('Lit') | +--------------------+ | 3 | +--------------------+
Завършващи празни места
Обърнете внимание, че CHAR_LENGTH()
включва крайни празни места (напр. интервали в края на низа) в своите изчисления.
Така че, ако добавим интервал в края на предишния пример:
SELECT CHAR_LENGTH('Lit ');
Ето резултата:
+---------------------+ | CHAR_LENGTH('Lit ') | +---------------------+ | 4 | +---------------------+
Но винаги можем да премахнем това крайно пространство, като добавим TRIM()
функция в микса:
SELECT CHAR_LENGTH(TRIM('Lit '));
Ето резултата:
+---------------------------+ | CHAR_LENGTH(TRIM('Lit ')) | +---------------------------+ | 3 | +---------------------------+
Водещи празни места
Същото е и с водещите празни места. Така че, ако добавим интервал към началото на низа вместо това:
SELECT CHAR_LENGTH(' Lit');
Получаваме същия резултат:
+---------------------+ | CHAR_LENGTH(' Lit') | +---------------------+ | 4 | +---------------------+
Типове данни
Няма значение под какъв тип данни се съхранява низът, той пак ще върне същите резултати. Това е в контраст с LENGTH()
функция, която ще върне двоен брой знаци в случаите, когато данните се съхраняват като Unicode низ.
В следващия пример колоната ArtistName използва varchar(255) :
SELECT CHAR_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Ето резултата:
+-------------------------+ | CHAR_LENGTH(ArtistName) | +-------------------------+ | 3 | +-------------------------+
И ако променим ArtistName
колона, за да използвате Unicode:
ALTER TABLE Artists MODIFY COLUMN ArtistName VARCHAR(255) unicode;
И изпълнете отново същата заявка:
SELECT CHAR_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Все още получаваме същия резултат:
+-------------------------+ | CHAR_LENGTH(ArtistName) | +-------------------------+ | 3 | +-------------------------+
Въпреки това, ако бяхме използвали LENGTH()
функция, резултатът ще бъде 6. Това е така, защото Unicode низовете съхраняват 2 байта на знак, а LENGTH()
функцията връща дължината, измерена в байтове.