No MariaDB,
LENGTH()
é uma função de string interna que retorna o comprimento do argumento de string fornecido. Quando no modo padrão, o comprimento da string é medido em bytes. Mas quando no modo Oracle, é medido em caracteres.
Sintaxe
A sintaxe fica assim:
LENGTH(str)
Onde
str
é a string para a qual o comprimento será retornado. Exemplo
Segue um exemplo básico:
SELECT LENGTH('café');
Resultado:
+-----------------+ | LENGTH('café') | +-----------------+ | 5 | +-----------------+
Nesse caso, a string tinha quatro caracteres, mas
LENGTH()
retornou 5
. Isso ocorre porque o último caractere usa dois bytes e estou usando o modo SQL padrão (meu
sql_mode=DEFAULT
). Quando no modo SQL padrão, LENGTH()
retorna o número de bytes. Modo Oráculo
Mudar para o modo Oracle resulta em
LENGTH()
retornando apenas o número de caracteres na string (em oposição ao número de bytes). Vamos mudar nossa sessão para o modo Oracle:
SET SESSION sql_mode='ORACLE';
E agora vamos executar o
LENGTH()
anterior exemplo novamente:SELECT LENGTH('café');
Resultado:
+-----------------+ | LENGTH('café') | +-----------------+ | 4 | +-----------------+
Desta vez, ele retorna o número de caracteres (4) em vez do número de bytes (5).
Quando estiver no modo Oracle,
LENGTH()
retorna o mesmo resultado que CHAR_LENGTH()
e seu sinônimo, CHARACTER_LENGTH()
. Comparação com CHAR_LENGTH()
e BIT_LENGTH()
Vamos voltar ao modo padrão:
SET SESSION sql_mode=DEFAULT;
Aqui está uma comparação rápida entre
LENGTH()
quando no modo padrão, CHAR_LENGTH()
e BIT_LENGTH()
que retorna o número de bits em uma string:SELECT
LENGTH('อ'),
CHAR_LENGTH('อ'),
BIT_LENGTH('อ');
Resultado:
+---------------+--------------------+-------------------+ | LENGTH('อ') | CHAR_LENGTH('อ') | BIT_LENGTH('อ') | +---------------+--------------------+-------------------+ | 3 | 1 | 24 | +---------------+--------------------+-------------------+
Este caractere tailandês (
อ
) usa 3 bytes e, portanto, LENGTH()
retorna 3
. CHAR_LENGTH()
retorna 1
, porque ainda é apenas um único caractere e BIT_LENGTH()
retorna o número de bits (24
). Novamente, se estivéssemos no modo Oracle,
LENGTH()
teria retornado o mesmo que CHAR_LENGTH()
. Não-Strings
Se o argumento não for uma string, ele será convertido em uma string.
Aqui está outro exemplo que usa um número:
SELECT LENGTH(1234);
Resultado:
+--------------+ | LENGTH(1234) | +--------------+ | 4 | +--------------+
Argumentos nulos
Passando
null
retorna null
:SELECT LENGTH(null);
Resultado:
+--------------+ | LENGTH(null) | +--------------+ | NULL | +--------------+
Argumento ausente
Chamando
LENGTH()
sem passar um argumento resulta em um erro:SELECT LENGTH();
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LENGTH'