Contar caracteres no MySQL

Vamos fazer uso das funções da linguagem SQL para contar caracteres de um campo salvo em uma tabela. Ou seja, vamos selecionar diversos registros de uma tabela e contar os caracteres de um de seus campos.


No MySQL temos várias funções para contar caracteres:

LENGTH(cadeia) – comando também existente no Oracle

Recebe uma cadeia , conta e retorna o número de caracteres.

CHARACTER_LENGTH(cadeia) 

Recebe também uma cadeia e retorna o número de caracteres contados.

CHAR_LENGTH(cadeia)

É um sinônimo de CHARACTER_LENGTH. Embora nem todas as versões de MySQL o tenham.

A diferença entre LENGTH e CHARACTER_LENGTH é que em CHARACTER_LENGTH um caractere “multibyte” conta como um só caractere. Em LENGTH conta o número de bytes da cadeia. Assim, no caso de ter uma cadeia com 5 caracteres que ocupam 2 bytes cada um, LENGTH retornaria 10 e CHARACTER_LENGTH só 5.

Por enquanto vamos utilizar CHARACTER_LENGTH, ela devolverá os resultados que esperamos obter, o número de caracteres da cadeia, independentemente de que a codificação possa ser multi-byte.

SELECT character_length( 'um texto' )

Esta sentença devolveria o valor 8, que é o número de caracteres que possui a cadeia “um texto”.

Porém, agora imaginemos que queremos obter todos os países de uma tabela, junto com o número de caracteres que têm cada uma das cadeias do nome do país.

SELECT CHARACTER_LENGTH(nome_país), nome_país FROM país

Isto nos retornaria um conjunto de registros com o número de caracteres de cada nome do país e em seguida outro campo com o nome do país.

SELECT nome_país FROM país where CHARACTER_LENGTH(nome_país)=6

Isto nos retorna os nomes de país que possuem 6 caracteres.

SELECT CHARACTER_LENGTH(nome_país) as 'numcaracteres', nome_país FROM país ORDER BY CHARACTER_LENGTH(nome_país)

Esta última sentença retorna um conjunto de registros onde o primeiro campo, ao qual demos o nome de “numcaracteres” para depois nos referirmos a ele, mostra o número de caracteres e o segundo campo, o nome do país. Em seguida está ordenado pela longitude da cadeia, contada também por seus caracteres.