Se você trabalha com o SQL Server há algum tempo, pode ter encontrado o
Datalength()
função. Esta função retorna o número de bytes usados para representar uma expressão. Mas se você mudou para o MySQL, pode estar procurando uma função que faça a mesma coisa.
No MySQL, o
Length()
função faz basicamente a mesma coisa que o T-SQL Datalength()
função faz no SQL Server (e Azure). Length()
do MySQL função retorna o comprimento de uma string, medida em bytes.Exemplos
Aqui estão alguns exemplos para demonstrar.
SQL Server
Aqui está um exemplo básico para SQL Server (usando T-SQL):
SELECT DATALENGTH('Cat') AS Datalength;
Resultado:
Datalength ---------- 3
MySQL
Aqui está a consulta equivalente no MySQL:
SELECT LENGTH('Cat') AS Length;
Resultado:
+--------+ | Length | +--------+ | 3 | +--------+
Ambos medem bytes
Mas o mais importante, ambas as funções medem bytes , não personagens . Portanto, se os dados forem armazenados como uma string Unicode, o número de bytes será o dobro do número de caracteres. Isso ocorre porque as strings Unicode usam 2 bytes por caracteres.
Abaixo está um exemplo de execução essencialmente a mesma consulta em uma coluna Unicode no SQL Server e, em seguida, no MySQL.
SQL Server
SELECT DATALENGTH(ArtistName) AS DataLength FROM Artists WHERE ArtistName = 'Lit';
Resultado:
DataLength ---------- 6
MySQL
SELECT LENGTH(ArtistName) AS Length FROM Artists WHERE ArtistName = 'Lit';
Resultado:
+--------+ | Length | +--------+ | 6 | +--------+
É importante observar que o motivo pelo qual esses exemplos retornam 6 é por causa do tipo de dados usado no banco de dados. Ambos os exemplos também podem retornar 3 se os dados não forem armazenados como Unicode.
Caracteres vs Bytes
No exemplo do SQL Server, se tivéssemos usado o
Len()
em vez disso, teria retornado 3. Isso ocorre porque Len()
retorna o número de caracteres – não os bytes. Da mesma forma para o MySQL, se tivéssemos usado o
Char_Length()
função, também teria retornado 3, porque Char_Length()
retorna o número de caracteres em vez de bytes.