Uma das muitas funções no MySQL é o
LENGTH()
função, que retorna o comprimento de uma string, medido em bytes. Exemplo:
SELECT LENGTH('Lit');
Resultado:
+---------------+ | LENGTH('Lit') | +---------------+ | 3 | +---------------+
Este é um exemplo simples e o resultado é o mesmo se tivéssemos usado o
CHAR_LENGTH()
função. No entanto, o LENGTH()
função pode retornar resultados diferentes, dependendo do tipo de dados.Tipos de dados
Quando você consulta um banco de dados, o
LENGTH()
função pode retornar um resultado diferente, dependendo do tipo de dados. As strings Unicode retornam o dobro do número de bytes. As strings UTF-8 podem variar. Aqui está um exemplo de uso de UTF-8:
SELECT LENGTH(_utf8 '€');
Resultados:
+---------------------+ | LENGTH(_utf8 '€') | +---------------------+ | 3 | +---------------------+
Neste caso, o sinal do Euro usa 3 bytes.
No exemplo a seguir, consultamos um banco de dados. Nesse caso, o
ArtistName
coluna usa varchar(255) tipo de dados:SELECT LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Então o resultado fica assim:
+--------------------+ | LENGTH(ArtistName) | +--------------------+ | 3 | +--------------------+
No entanto, se alterarmos a coluna para
ucs2
, cada caractere será representado por um código Unicode de 2 bytes e, portanto, o resultado será diferente. Para demonstrar, podemos alterar a tabela assim:
SELECT LENGTH(ArtistName) ALTER TABLE Artists MODIFY COLUMN ArtistName VARCHAR(255) CHARSET ucs2;
Agora, se consultarmos novamente:
SELECT LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Resultado:
+--------------------+ | LENGTH(ArtistName) | +--------------------+ | 6 | +--------------------+
Brancos à direita
O
LENGTH()
função conta os espaços em branco à direita (como espaços no final da string). Então, se adicionarmos um espaço ao final do primeiro exemplo, obteremos o seguinte resultado:SELECT LENGTH('Lit');
Resultado:
+----------------+ | LENGTH('Lit ') | +----------------+ | 4 | +----------------+
Espaços em branco
Obtemos o mesmo resultado com espaços em branco à esquerda (por exemplo, espaços no início da string):
SELECT LENGTH(' Lit');
Resultado:
+----------------+ | LENGTH('Lit ') | +----------------+ | 4 | +----------------+
Transact-SQL (para SQL Server, Azure) tem uma função semelhante, mas em T-SQL é chamada de
DATALENGTH()
.