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