Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Was ist das DATALENGTH()-Äquivalent in MySQL?

Wenn Sie längere Zeit mit SQL Server gearbeitet haben, sind Sie vielleicht auf die Datalength() gestoßen Funktion. Diese Funktion gibt die Anzahl der Bytes zurück, die zur Darstellung eines Ausdrucks verwendet werden.

Aber wenn Sie zu MySQL gewechselt sind, suchen Sie vielleicht nach einer Funktion, die dasselbe tut.

In MySQL die Length() Die Funktion macht im Grunde dasselbe wie die T-SQL-Datalength() Funktion funktioniert in SQL Server (und Azure). Die Length() von MySQL Die Funktion gibt die Länge eines Strings zurück, gemessen in Bytes.

Beispiele

Hier sind einige Beispiele zur Veranschaulichung.

SQL-Server

Hier ist ein einfaches Beispiel für SQL Server (mit T-SQL):

SELECT DATALENGTH('Cat') AS Datalength;

Ergebnis:

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

MySQL

Hier ist die entsprechende Abfrage in MySQL:

SELECT LENGTH('Cat') AS Length;

Ergebnis:

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

Beide messen Bytes

Aber am wichtigsten ist, dass beide Funktionen Bytes messen , nicht Zeichen . Wenn die Daten also als Unicode-String gespeichert werden, ist die Anzahl der Bytes doppelt so groß wie die Anzahl der Zeichen. Dies liegt daran, dass Unicode-Strings 2 Bytes pro Zeichen verwenden.

Unten sehen Sie ein Beispiel dafür, wie im Wesentlichen dieselbe Abfrage für eine Unicode-Spalte in SQL Server und dann in MySQL ausgeführt wird.

SQL-Server

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

Ergebnis:

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

MySQL

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

Ergebnis:

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

Es ist wichtig zu beachten, dass der Grund, warum diese Beispiele 6 zurückgeben, der in der Datenbank verwendete Datentyp ist. Beide Beispiele könnten auch 3 zurückgeben, wenn die Daten nicht als Unicode gespeichert wurden.

Zeichen gegen Bytes

Wenn wir im SQL Server-Beispiel den Len() verwendet hätten Funktion stattdessen hätte sie 3 zurückgegeben. Das liegt daran, dass Len() gibt die Anzahl der Zeichen zurück – nicht die Bytes.

Ähnlich für MySQL, wenn wir Char_Length() verwendet hätten Funktion, hätte sie auch 3 zurückgegeben, weil Char_Length() gibt die Anzahl der Zeichen anstelle von Bytes zurück.