Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Co to jest DATALENGTH() w SQL Server?

W SQL Server (i Azure) T-SQL DATALENGTH() funkcja zwraca liczbę bajtów użytych do przedstawienia dowolnego wyrażenia.

Na przykład:

SELECT DATALENGTH('Lit');

Wynik:

3

W tym przypadku łańcuch zawiera 3 bajty Lit .

Jest to jednak prosty przykład. Wyniki mogą wyglądać bardzo różnie, w zależności od typu danych.

W powyższym przykładzie widzieliśmy, że w słowie Lit są 3 bajty . Zdarza się również, że jest to dokładnie liczba znaków w ciągu. Ale jeśli zwrócimy to samo słowo z kolumny w bazie danych, możemy otrzymać inny wynik. Na przykład to:

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

Wynik:

ArtistName  DataLength
----------  ----------
Lit         6          

W tym przypadku długość danych wynosi 6.

Powodem tego jest to, że w tej konkretnej bazie danych kolumna ma nvarchar(255) typ danych. nvarchar typ danych to ciąg Unicode, który przechowuje 2 bajty na znak (co skutecznie podwaja długość danych). Gdyby zamiast tego w kolumnie użyto varchar(255) miałby długość danych równą 3. Jednak gdyby powiedział, char(25) ciąg miałby długość danych 25.

Ponadto, jeśli wcześniej był to char(25) ale następnie został przekonwertowany na varchar(255) nadal miałby długość danych 255.

Jednak we wszystkich przypadkach LEN() funkcja zwróciłaby 3.

Bluzy końcowe

DATALENGTH() funkcja zlicza końcowe spacje (np. spacje na końcu ciągu, tabulatory, powrót karetki itp.).

Przykład:

SELECT DATALENGTH('Lit ');

Wynik:

4

W tym przykładzie po prostu dodałem spację na końcu ciągu. To kolejna różnica między LEN() i DATALENGTH() .

Możesz zobaczyć przykłady LEN() i DATALENGTH() obok siebie w LEN() vs DATALENGTH() .

Typ zwrotu

DATALENGTH() funkcja zwraca typ danych int , chyba że wyrażenie to   varchar(max)nvarchar(maks.) lub zmienna (maks.) , w takim przypadku zwraca bigint .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co to jest typ danych SYSNAME w SQL Server?

  2. Jak wyświetlić zapytanie i wyniki w oddzielnej karcie w SQL Server Management Studio (SSMS) — samouczek SQL Server / TSQL, część 15

  3. Przechowywanie danych XML w SQL Server

  4. Replikacja bazy danych SQL Server

  5. ATN2() Przykłady w SQL Server