MC, 2012
Ilustracja do artykułu: SQL - Pobieranie długości danych typu VARCHAR, TEXT, IMAGE (LEN() vs DATALENGTH())

SQL - Pobieranie długości danych typu VARCHAR, TEXT, IMAGE (LEN() vs DATALENGTH())

Krótka notatka dotykająca problemu pobierania długości pól o typach CHAR (NCHAR), VARCHAR (NVARCHAR), TEXT (NTEXT), czy IMAGE z tabel baz danych SQL.

W czym problem?

Bywa, że z danej tabeli w bazie danych musimy pobrać długość tekstu z danego pola. Do tej pory zawsze radziłem sobie używając funkcji LEN(), która zwracała interesujące mnie wartości.
SELECT LEN(pole) AS dlugoscPola FROM tabela;
Powyższe, bardzo proste przykładowe zapytanie oczywiście zadziała jak należy, jednak jedynie dla pól o typach CHAR/NCHAR i VARCHAR/NVARCHAR. Niestety próba takiego zapytania, dla pola o typie TEXT zamiast interesujących mnie parametrów zwróciła błąd:
Argument data type text is invalid for argument 1 of len function.
Jak się później dowiedziałem, podobnie rzecz będzie się miała dla kolumn o typach IMAGE
Argument data type image is invalid for argument 1 of len function.

Jak więc pobrać długość tych pól?

Jak widzimy zakres działania funkcji LEN() jest ograniczony. Na szczęście istnieje funkcja gotowa współpracować ze wszystkim typami danych SQL, a jest nią DATALENGTH(). Przy jej pomocy bez problemu pobierzemy z bazy długości pól o typach VARCHAR, TEXT, IMAGE czy innych. Używamy jej w sposób całkowicie analogiczny:
SELECT DATALENGTH(pole) AS dlugoscPola FROM tabela;

Uważam, że jest to rzecz, którą warto zapamiętać.

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: