No MySQL, o
CHAR_LENGTH()
A função retorna o comprimento de uma string, medida em caracteres. O MySQL também tem CHARACTER_LENGTH()
, que é sinônimo de CHAR_LENGTH()
. Aqui está um exemplo:
SELECT CHAR_LENGTH('Lit');
E aqui está o resultado:
+--------------------+ | CHAR_LENGTH('Lit') | +--------------------+ | 3 | +--------------------+
Brancos à direita
Observe que
CHAR_LENGTH()
inclui espaços em branco à direita (por exemplo, espaços no final da string) em seus cálculos. Então, se adicionarmos um espaço ao final do exemplo anterior:
SELECT CHAR_LENGTH('Lit');
Aqui está o resultado:
+---------------------+ | CHAR_LENGTH('Lit ') | +---------------------+ | 4 | +---------------------+
Mas sempre podemos remover esse espaço à direita adicionando o
TRIM()
função na mistura:SELECT CHAR_LENGTH(TRIM('Lit '));
Aqui está o resultado:
+---------------------------+ | CHAR_LENGTH(TRIM('Lit ')) | +---------------------------+ | 3 | +---------------------------+
Espaços em branco
É a mesma coisa com espaços em branco iniciais. Então, se adicionarmos um espaço ao início da string em vez disso:
SELECT CHAR_LENGTH(' Lit');
Obtemos o mesmo resultado:
+---------------------+ | CHAR_LENGTH(' Lit') | +---------------------+ | 4 | +---------------------+
Tipos de dados
Não importa em que tipo de dados a string é armazenada, ela ainda retornará os mesmos resultados. Isso contrasta com o
LENGTH()
função, que retornará o dobro do número de caracteres nos casos em que os dados estiverem sendo armazenados como uma string Unicode. No exemplo a seguir, a coluna ArtistName usa varchar(255) :
SELECT CHAR_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Aqui está o resultado:
+-------------------------+ | CHAR_LENGTH(ArtistName) | +-------------------------+ | 3 | +-------------------------+
E se modificarmos o
ArtistName
coluna para usar Unicode:ALTER TABLE Artists MODIFY COLUMN ArtistName VARCHAR(255) unicode;
E execute a mesma consulta novamente:
SELECT CHAR_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Ainda obtemos o mesmo resultado:
+-------------------------+ | CHAR_LENGTH(ArtistName) | +-------------------------+ | 3 | +-------------------------+
No entanto, se tivéssemos usado o
LENGTH()
função, o resultado seria 6. Isso ocorre porque as strings Unicode armazenam 2 bytes por caractere e o LENGTH()
A função retorna o comprimento medido em bytes.