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

Как работи функцията OCTET_LENGTH() в MySQL

В MySQL OCTET_LENGTH() функцията връща дължината на низ, измерена в байтове.

Тази функция всъщност е синоним на LENGTH() .

Синтаксис

Основният синтаксис е така:

OCTET_LENGTH(str)

Където str е низът, за който искате да бъде върната дължината.

Пример

SELECT OCTET_LENGTH('Котка');

Резултат:

+---------------------+| OCTET_LENGTH('Котка') |+---------------------+| 3 |+---------------------+

Това е същият резултат, който бихме получили, ако използвахме CHAR_LENGTH() функция. Въпреки това, OCTET_LENGTH() функцията може да връща различни резултати в зависимост от типа данни.

Типове данни

Когато правите заявка към база данни, OCTET_LENGTH() функцията може да върне различен резултат в зависимост от типа данни. Unicode низовете връщат двоен брой байтове. UTF-8 низовете могат да варират.

Ето пример за използване на UTF-8:

ИЗБЕРЕТЕ CHAR_LENGTH(_utf8 '€'), OCTET_LENGTH(_utf8 '€');

Резултати:

+--------------------+------------------- --------+| CHAR_LENGTH(_utf8 '€') | OCTET_LENGTH(_utf8 '€') |+-------------------------+-------------- ------------+| 1 | 3 |+--------------------+-------------------- -------+

В този случай дължината на знака е 1, но дължината на октета е 3 байта.

В следващия пример правим заявка към база данни. В този случай ArtistName колоната използва varchar(255) тип данни:

SELECT OCTET_LENGTH(Име на изпълнител) FROM ArtistsWHERE ArtistName ='Lit';

Така че резултатът изглежда така:

+-------------------------+| OCTET_LENGTH(Име на изпълнител) |+--------------------------+| 3 |+-------------------------+

Ако обаче променим колоната на ucs2 , всеки знак ще бъде представен с 2 байтов Unicode код и следователно резултатът ще бъде различен.

За да демонстрираме, можем да променим таблицата по следния начин:

ИЗБЕРЕТЕ OCTET_LENGTH(Име на изпълнител) ALTER TABLE Изпълнители ПРОМЕНИ КОЛОНА Име на изпълнител VARCHAR(255) CHARSET ucs2;

Сега, ако го потърсим отново:

SELECT OCTET_LENGTH(Име на изпълнител) FROM ArtistsWHERE ArtistName ='Lit';

Резултат:

+-------------------------+| OCTET_LENGTH(Име на изпълнител) |+--------------------------+| 6 |+-------------------------+

Завършващи празни места

 OCTET_LENGTH() функцията брои крайните празни места (като интервали в края на низа). Така че, ако добавим интервал в края на първия пример, получаваме следния резултат:

SELECT LENGTH('Cat');

Резултат:

+----------------+| LENGTH('Котка') |+----------------+| 4 |+----------------+

Водещи празни места

Получаваме същия резултат с водещи празни места (например интервали в началото на низа):

SELECT LENGTH('Котка');

Резултат:

+----------------+| LENGTH('Котка') |+----------------+| 4 |+----------------+

Освен ако, разбира се, не използваме функция като TRIM() , RTRIM() или LTRIM() за да отрежете празното пространство.

Пример:

ИЗБЕРЕТЕ ДЪЛЖИНА(RTRIM('Котка'));

Резултат:

<пред>+-----------------------+| LENGTH(RTRIM('Котка')) |+-----------------------+| 3 |+-----------------------+

Още примери

Ето няколко примера за различни низове:

ИЗБЕРЕТЕ OCTET_LENGTH('Quiet Riot') КАТО 'Резултат 1', OCTET_LENGTH('') КАТО 'Резултат 2', OCTET_LENGTH('1234 7') КАТО 'Резултат 3', OCTET_LENGTH(' ') КАТО 'Резултат 4 ', OCTET_LENGTH(TRIM(' ')) КАТО 'Резултат 5';

Резултат:

+----------+-----------+---------+----------+-- --------+| Резултат 1 | Резултат 2 | Резултат 3 | Резултат 4 | Резултат 5 |+----------+-----------+----------+---------+-- --------+| 10 | 0 | 7 | 3 | 0 |+---------+-----------+---------+----------+--- -------+

Имайте предвид, че резултати 4 и 5 са ​​различни, защото използвах TRIM() функция за изрязване на празното пространство от резултат 5. Тъй като низът се състои само от празно пространство, дължината на отрязания низ е 0 .

Transact-SQL (за SQL Server, Azure) има подобна функция на LENGTH() на MySQL и OCTET_LENGTH() функции, но в T-SQL се нарича  DATALENGTH() .


  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 репликация - блогът 101

  2. Код на грешка:2013. Загубена връзка с MySQL сървър по време на заявка

  3. показване на данни от SQL база данни в php/html таблица

  4. Нулирайте Root паролата на MySQL Server

  5. Операнд трябва да съдържа 1 колона - MySQL НЕ В