sql >> Databasteknik >  >> RDS >> Mysql

Vad är DATALENGTH()-ekvivalenten i MySQL?

Om du har arbetat med SQL Server hur länge som helst kan du ha stött på Datalength() fungera. Denna funktion returnerar antalet byte som används för att representera ett uttryck.

Men om du har flyttat till MySQL kanske du letar efter en funktion som gör samma sak.

I MySQL, Length() funktion gör i princip samma sak som T-SQL Datalength() fungerar i SQL Server (och Azure). MySQL:s Length() funktion returnerar längden på en sträng, mätt i byte.

Exempel

Här är några exempel att visa.

SQL-server

Här är ett grundläggande exempel för SQL Server (med T-SQL):

SELECT DATALENGTH('Cat') AS Datalength;

Resultat:

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

MySQL

Här är motsvarande fråga i MySQL:

SELECT LENGTH('Cat') AS Length;

Resultat:

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

Båda mäter byte

Men viktigast av allt, båda funktionerna mäter byte , inte tecken . Så om data lagras som en Unicode-sträng kommer antalet byte att vara dubbelt så många tecken. Detta beror på att Unicode-strängar använder 2 byte per tecken.

Nedan är ett exempel på att köra i huvudsak samma fråga mot en Unicode-kolumn i SQL Server, sedan i MySQL.

SQL-server

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

Resultat:

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

MySQL

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

Resultat:

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

Det är viktigt att notera att anledningen till att dessa exempel returnerar 6 är på grund av datatypen som används i databasen. Båda exemplen kan också returnera 3 om data inte lagrades som Unicode.

Tecken kontra byte

I SQL Server-exemplet, om vi hade använt Len() funktion istället skulle den ha returnerat 3. Detta beror på att Len() returnerar antalet tecken – inte byte.

På liknande sätt för MySQL, om vi hade använt Char_Length() funktion, skulle den också ha returnerat 3, eftersom Char_Length() returnerar antalet tecken istället för byte.


  1. Hur man skapar en CHECK-begränsning i SQL Server (T-SQL-exempel)

  2. Oracle PL/SQL:Kontrollera om BLOB eller CLOB är tom

  3. SQL Dev 4.2 Topp SQL

  4. SQL Server BCP export skadad fil?