sql >> Database teknologi >  >> RDS >> Mysql

Hvad er DATALENGTH()-ækvivalenten i MySQL?

Hvis du har arbejdet med SQL Server i længere tid, er du muligvis stødt på Datalength() fungere. Denne funktion returnerer antallet af bytes, der bruges til at repræsentere et udtryk.

Men hvis du er flyttet til MySQL, leder du muligvis efter en funktion, der gør det samme.

I MySQL er Length() funktion gør stort set det samme som T-SQL Datalength() funktion gør i SQL Server (og Azure). MySQLs Length() funktion returnerer længden af ​​en streng, målt i bytes.

Eksempler

Her er nogle eksempler til demonstration.

SQL-server

Her er et grundlæggende eksempel for SQL Server (ved hjælp af T-SQL):

SELECT DATALENGTH('Cat') AS Datalength;

Resultat:

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

MySQL

Her er den tilsvarende forespørgsel i MySQL:

SELECT LENGTH('Cat') AS Length;

Resultat:

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

Begge måler bytes

Men vigtigst af alt måler begge funktioner bytes , ikke tegn . Så hvis dataene er gemt som en Unicode-streng, vil antallet af bytes være det dobbelte af antallet af tegn. Dette skyldes, at Unicode-strenge bruger 2 bytes pr. tegn.

Nedenfor er et eksempel på at køre i det væsentlige den samme forespørgsel mod en Unicode-kolonne i SQL Server og derefter 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 er vigtigt at bemærke, at grunden til, at disse eksempler returnerer 6, er på grund af den datatype, der bruges i databasen. Begge eksempler kunne også returnere 3, hvis dataene ikke blev gemt som Unicode.

Tegn vs. bytes

I SQL Server-eksemplet, hvis vi havde brugt Len() funktion i stedet ville den have returneret 3. Dette er fordi Len() returnerer antallet af tegn – ikke bytes.

På samme måde for MySQL, hvis vi havde brugt Char_Length() funktion, ville den også have returneret 3, fordi Char_Length() returnerer antallet af tegn i stedet for bytes.


  1. Forespørgselsoptimering i PostgreSQL. FORKLAR Grundlæggende – Del 2

  2. Operatøren findes ikke:json =json

  3. Søg tekst i lagret procedure i SQL Server

  4. pg_restore Alternativer - PostgreSQL backup og automatisk gendannelse med ClusterControl