sql >> Database >  >> RDS >> Mysql

Wat is het DATALENGTH()-equivalent in MySQL?

Als u al geruime tijd met SQL Server werkt, bent u mogelijk de Datalength() tegengekomen functie. Deze functie retourneert het aantal bytes dat wordt gebruikt om een ​​uitdrukking weer te geven.

Maar als je bent overgestapt naar MySQL, ben je misschien op zoek naar een functie die hetzelfde doet.

In MySQL is de Length() functie doet in principe hetzelfde als de T-SQL Datalength() functie doet in SQL Server (en Azure). MySQL's Length() functie retourneert de lengte van een string, gemeten in bytes.

Voorbeelden

Hier zijn enkele voorbeelden om te demonstreren.

SQL-server

Hier is een basisvoorbeeld voor SQL Server (met T-SQL):

SELECT DATALENGTH('Cat') AS Datalength;

Resultaat:

Datalength
----------
3         

MySQL

Hier is de equivalente zoekopdracht in MySQL:

SELECT LENGTH('Cat') AS Length;

Resultaat:

+--------+
| Length |
+--------+
|      3 |
+--------+

Beide bytes meten

Maar het belangrijkste is dat beide functies bytes meten , niet tekens . Dus als de gegevens worden opgeslagen als een Unicode-reeks, is het aantal bytes het dubbele van het aantal tekens. Dit komt omdat Unicode-strings 2 bytes per karakters gebruiken.

Hieronder ziet u een voorbeeld van het uitvoeren van in wezen dezelfde query op een Unicode-kolom in SQL Server en vervolgens in MySQL.

SQL-server

SELECT DATALENGTH(ArtistName) AS DataLength
FROM Artists 
WHERE ArtistName = 'Lit';

Resultaat:

DataLength
----------
6         

MySQL

SELECT LENGTH(ArtistName) AS Length
FROM Artists
WHERE ArtistName = 'Lit';

Resultaat:

+--------+
| Length |
+--------+
|      6 |
+--------+

Het is belangrijk op te merken dat de reden dat deze voorbeelden 6 retourneren, is vanwege het gegevenstype dat in de database wordt gebruikt. Beide voorbeelden kunnen ook 3 retourneren als de gegevens niet als Unicode zijn opgeslagen.

Tekens versus bytes

Als we in het SQL Server-voorbeeld de Len() . hadden gebruikt functie in plaats daarvan zou het 3 hebben geretourneerd. Dit komt omdat Len() geeft het aantal karakters terug – niet de bytes.

Hetzelfde geldt voor MySQL, als we de Char_Length() . hadden gebruikt functie, zou het ook 3 hebben geretourneerd, omdat Char_Length() geeft het aantal tekens terug in plaats van bytes.


  1. GROUPING- en GROUPING_ID-functies in SQL Server begrijpen

  2. MySQL-verbinding via SSH-tunnel - hoe een andere MySQL-server specificeren?

  3. Wanneer gebruik je Common Table Expression (CTE)

  4. Kan JavaScript verbinding maken met MySQL?