Mysql
 sql >> база данни >  >> RDS >> Mysql

Какво е CHAR_LENGTH() в MySQL?

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Асинхронно репликация Автоматично отказване в MySQL 8.0.22

  2. Най-бързият метод за архивиране и възстановяване на MySQL

  3. Как да получа текущата часова зона на MySQL?

  4. Как да оптимизираме базата данни на уебсайта

  5. Бърз лесен начин за мигриране на SQLite3 към MySQL?