Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O que é CHAR_LENGTH() no MySQL?


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.