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

Как работи LENGTH() в MariaDB

В MariaDB, LENGTH() е вградена функция низ, която връща дължината на дадения низ аргумент.

Когато е в режим по подразбиране, дължината на низа се измерва в байтове. Но когато е в режим на Oracle, се измерва в знаци.

Синтаксис

Синтаксисът е така:

LENGTH(str)

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

Пример

Ето един основен пример:

SELECT LENGTH('café');

Резултат:

+-----------------+
| LENGTH('café')  |
+-----------------+
|               5 |
+-----------------+

В този случай низът е дълъг четири знака, но LENGTH() върна 5 .

Това е така, защото последният знак използва два байта и аз използвам SQL режима по подразбиране (моят sql_mode=DEFAULT ). Когато е в SQL режим по подразбиране, LENGTH() връща броя на байтовете.

Режим Oracle

Превключването към режим на Oracle води до LENGTH() връща само броя на знаците в низа (за разлика от броя на байтовете).

Нека превключим нашата сесия в режим на Oracle:

SET SESSION sql_mode='ORACLE';

И сега нека изпълним предишния LENGTH() отново пример:

SELECT LENGTH('café');

Резултат:

+-----------------+
| LENGTH('café')  |
+-----------------+
|               4 |
+-----------------+

Този път връща броя на знаците (4) вместо броя на байтовете (5).

Когато сте в режим на Oracle, LENGTH() връща същия резултат като CHAR_LENGTH() и неговия синоним, CHARACTER_LENGTH() .

Сравнение с CHAR_LENGTH() и BIT_LENGTH()

Нека се върнем към режима по подразбиране:

SET SESSION sql_mode=DEFAULT;

Ето едно бързо сравнение между LENGTH() когато е в режим по подразбиране, CHAR_LENGTH() и BIT_LENGTH() който връща броя на битовете в низ:

SELECT 
    LENGTH('อ'),
    CHAR_LENGTH('อ'),
    BIT_LENGTH('อ');

Резултат:

+---------------+--------------------+-------------------+
| LENGTH('อ')   | CHAR_LENGTH('อ')   | BIT_LENGTH('อ')   |
+---------------+--------------------+-------------------+
|             3 |                  1 |                24 |
+---------------+--------------------+-------------------+

Този тайландски знак ( ) използва 3 байта и следователно LENGTH() връща 3 .

CHAR_LENGTH() връща 1 , защото все още е само един знак и BIT_LENGTH() връща броя на битовете (24 ).

Отново, ако бяхме в режим на Oracle, LENGTH() би върнал същото като CHAR_LENGTH() .

Не-низови

Ако аргументът не е низ, той се преобразува в низ.

Ето още един пример, който използва число:

SELECT LENGTH(1234);

Резултат:

+--------------+
| LENGTH(1234) |
+--------------+
|            4 |
+--------------+

Нулеви аргументи

Предаването на null връща null :

SELECT LENGTH(null);

Резултат:

+--------------+
| LENGTH(null) |
+--------------+
|         NULL |
+--------------+

Липсващ аргумент

Извикване на LENGTH() без подаване на аргумент води до грешка:

SELECT LENGTH();

Резултат:

ERROR 1582 (42000): Incorrect parameter count in the call to native function '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. MariaDB идва в град близо до вас!

  2. Поправете „ГРЕШКА 1250 (42000):Таблица „...“ от един от SELECT не може да се използва в клаузата ORDER“ в MariaDB

  3. Как работи UTC_TIME() в MariaDB

  4. Планиране за аварийно възстановяване за MySQL и MariaDB

  5. MariaDB ОСВЕН Операторът е обяснен