MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come funziona CHAR_LENGTH() in MariaDB

In MariaDB, CHAR_LENGTH() è una funzione stringa incorporata che restituisce la lunghezza dell'argomento stringa specificato, misurata in caratteri.

Sintassi

La sintassi è questa:

CHAR_LENGTH(str)

Dove str è la stringa per la quale verrà restituita la lunghezza.

Esempio

Ecco un esempio di base:

SELECT CHAR_LENGTH('Splash');

Risultato:

+-----------------------+
| CHAR_LENGTH('Splash') |
+-----------------------+
|                     6 |
+-----------------------+

Caratteri multibyte

Il CHAR_LENGTH() la funzione conta ogni carattere come un singolo carattere, indipendentemente dal numero di byte che utilizza. Pertanto, i caratteri che utilizzano due, tre o anche quattro byte verranno comunque contati come un carattere.

Questo è in contrasto con funzioni come LENGTH() , che restituisce il numero di byte (a meno che non sia in modalità Oracle, nel qual caso fa lo stesso di CHAR_LENGTH() – restituisce il numero di caratteri). È anche in contrasto con funzioni come BIT_LENGTH() che restituisce il numero di bit in una stringa.

Ecco un esempio che confronta queste funzioni:

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

Risultato:

+-------------------+--------------+------------------+
| CHAR_LENGTH('©')  | LENGTH('©')  | BIT_LENGTH('©')  |
+-------------------+--------------+------------------+
|                 1 |            2 |               16 |
+-------------------+--------------+------------------+

Il simbolo del copyright (© ) utilizza due byte. CHAR_LENGTH() restituisce 1, perché è ancora solo un singolo carattere. LENGTH() e BIT_LENGTH() d'altra parte, restituisce rispettivamente il numero di byte e bit.

Questo esempio è stato eseguito utilizzando l'impostazione predefinita SQL_MODE . Come accennato, se fosse stato in modalità Oracle, LENGTH() si sarebbe comportato come CHAR_LENGTH() e ha restituito 1 .

Argomenti nulli

Passaggio null restituisce null :

SELECT CHAR_LENGTH(null);

Risultato:

+-------------------+
| CHAR_LENGTH(null) |
+-------------------+
|              NULL |
+-------------------+

Argomento mancante

Chiamando CHAR_LENGTH() senza passare un argomento si ottiene un errore:

SELECT CHAR_LENGTH();

Risultato:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'CHAR_LENGTH'

Vedi anche il CHARACTER_LENGTH() funzione, che è sinonimo di CHAR_LENGTH() .