MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Jak działa LENGTH() w MariaDB

W MariaDB, LENGTH() jest wbudowaną funkcją łańcuchową, która zwraca długość podanego argumentu łańcuchowego.

W trybie domyślnym długość ciągu jest mierzona w bajtach. Ale w trybie Oracle jest to mierzone w znakach.

Składnia

Składnia wygląda tak:

LENGTH(str)

Gdzie str to ciąg, dla którego zostanie zwrócona długość.

Przykład

Oto podstawowy przykład:

SELECT LENGTH('café');

Wynik:

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

W tym przypadku ciąg miał cztery znaki, ale LENGTH() zwrócono 5 .

Dzieje się tak, ponieważ ostatni znak używa dwóch bajtów, a ja używam domyślnego trybu SQL (mój sql_mode=DEFAULT ). W domyślnym trybie SQL LENGTH() zwraca liczbę bajtów.

Tryb Oracle

Przejście do trybu Oracle powoduje LENGTH() zwraca tylko liczbę znaków w ciągu (w przeciwieństwie do liczby bajtów).

Przełączmy naszą sesję w tryb Oracle:

SET SESSION sql_mode='ORACLE';

A teraz uruchommy poprzednią LENGTH() przykład ponownie:

SELECT LENGTH('café');

Wynik:

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

Tym razem zwraca liczbę znaków (4) zamiast liczby bajtów (5).

W trybie Oracle LENGTH() zwraca ten sam wynik co CHAR_LENGTH() i jego synonim, CHARACTER_LENGTH() .

Porównanie z CHAR_LENGTH() i BIT_LENGTH()

Wróćmy do trybu domyślnego:

SET SESSION sql_mode=DEFAULT;

Oto szybkie porównanie między LENGTH() w trybie domyślnym CHAR_LENGTH() i BIT_LENGTH() który zwraca liczbę bitów w ciągu:

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

Wynik:

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

Ten znak tajski ( ) używa 3 bajtów, a zatem LENGTH() zwraca 3 .

CHAR_LENGTH() zwraca 1 , ponieważ to wciąż tylko jeden znak, a BIT_LENGTH() zwraca liczbę bitów (24 ).

Ponownie, gdybyśmy byli w trybie Oracle, LENGTH() zwróciłby to samo co CHAR_LENGTH() .

Nie-Strunowe

Jeśli argument nie jest łańcuchem, jest konwertowany na łańcuch.

Oto kolejny przykład z liczbą:

SELECT LENGTH(1234);

Wynik:

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

Argumenty zerowe

Przekazywanie null zwraca null :

SELECT LENGTH(null);

Wynik:

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

Brakujący argument

Wywołanie LENGTH() bez przekazania argumentu powoduje błąd:

SELECT LENGTH();

Wynik:

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. Kerberos dla SQLyog przez MariaDB Connector/C

  2. Funkcje daty i czasu MariaDB (pełna lista)

  3. Używanie Sysbench do generowania danych testowych dla tabeli podzielonej na fragmenty w MySQL

  4. Jak działa SECOND() w MariaDB

  5. Objaśnienie operatora MariaDB UNION