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'