В 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() функцията връща дължината, измерена в байтове.