Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jaki jest odpowiednik DATALENGTH() w MySQL?

Jeśli pracujesz z SQL Server przez dłuższy czas, być może napotkałeś Datalength() funkcjonować. Ta funkcja zwraca liczbę bajtów użytych do reprezentowania wyrażenia.

Ale jeśli przeszedłeś na MySQL, być może szukasz funkcji, która robi to samo.

W MySQL funkcja Length() funkcja robi w zasadzie to samo, co T-SQL Datalength() funkcja działa w SQL Server (i Azure). Length() w MySQL funkcja zwraca długość ciągu mierzoną w bajtach.

Przykłady

Oto kilka przykładów do zademonstrowania.

Serwer SQL

Oto podstawowy przykład SQL Server (przy użyciu T-SQL):

SELECT DATALENGTH('Cat') AS Datalength;

Wynik:

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

MySQL

Oto równoważne zapytanie w MySQL:

SELECT LENGTH('Cat') AS Length;

Wynik:

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

Oba bajty pomiaru

Ale co najważniejsze, obie funkcje mierzą bajty , a nie znaki . Jeśli więc dane są przechowywane jako ciąg Unicode, liczba bajtów będzie podwojona do liczby znaków. Dzieje się tak, ponieważ ciągi Unicode używają 2 bajtów na znak.

Poniżej znajduje się przykład uruchomienia zasadniczo tego samego zapytania względem kolumny Unicode w SQL Server, a następnie w MySQL.

Serwer SQL

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

Wynik:

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

MySQL

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

Wynik:

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

Należy zauważyć, że powodem, dla którego te przykłady zwracają 6, jest typ danych używany w bazie danych. Oba przykłady mogą również zwrócić 3, jeśli dane nie były przechowywane jako Unicode.

Znaki a bajty

W przykładzie SQL Server, gdybyśmy użyli Len() zamiast tego zwróciłby 3. Dzieje się tak, ponieważ Len() zwraca liczbę znaków – nie bajtów.

Podobnie dla MySQL, gdybyśmy użyli Char_Length() funkcja, to również zwróciłoby 3, ponieważ Char_Length() zwraca liczbę znaków zamiast bajtów.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kod błędu:1005. Nie można utworzyć tabeli „...” (errno:150)

  2. MySQL SELECT tylko nie wartości null

  3. Różnice między utf8 a latin1

  4. MariaDB – MySQL – Pokaż silniki, aby wyświetlić wszystkie dostępne i obsługiwane silniki

  5. Jaka jest różnica między znacznikiem a nawiasem kwadratowym w instrukcjach SQL?