
Funkcja LENGTH w SQL to jedno z podstawowych narzędzi, które pozwala na określenie długości ciągu znaków w bazie danych. Może się wydawać, że to proste zagadnienie, ale gdy zagłębimy się w szczegóły, okazuje się, że sposób, w jaki działa LENGTH, może zależeć od systemu zarządzania bazą danych (DBMS) i rodzaju danych, które przetwarzamy.
Co robi funkcja LENGTH?
Funkcja LENGTH zwraca liczbę bajtów lub znaków w danym ciągu tekstowym. W większości baz danych, w tym MySQL, zwraca liczbę bajtów, ale w niektórych systemach (np. w SQLite) może zwracać liczbę znaków.
Przykładowa składnia:
SELECT LENGTH('SQL');
Wynik:
3
LENGTH a CHAR_LENGTH – jaka jest różnica?
W bazach danych, takich jak MySQL, PostgreSQL czy MariaDB, funkcja LENGTH liczy bajty, ale obok niej istnieje funkcja CHAR_LENGTH, która liczy faktyczną liczbę znaków. Jest to istotne w przypadku tekstów zapisanych w kodowaniu wielobajtowym, np. UTF-8.
Przykład:
SELECT LENGTH('ĄĆĘ'), CHAR_LENGTH('ĄĆĘ');
Jeśli używasz UTF-8, wynik może być następujący:
| Funkcja | Wynik |
|---|---|
| LENGTH(’ĄĆĘ’) | 6 |
| CHAR_LENGTH(’ĄĆĘ’) | 3 |
Oznacza to, że każdy polski znak diakrytyczny został zapisany w dwóch bajtach.
Przykłady zastosowania LENGTH
Funkcja LENGTH może być używana w różnych scenariuszach. Oto kilka praktycznych zastosowań:
1. Filtrowanie danych na podstawie długości
Jeśli chcemy znaleźć wszystkie wpisy w tabeli, gdzie długość tekstu w kolumnie nazwa przekracza 10 znaków:
SELECT * FROM produkty WHERE LENGTH(nazwa) > 10;
2. Sprawdzenie długości pól w bazie danych
Gdy projektujemy bazę danych, możemy chcieć kontrolować długość wprowadzanych danych i sprawdzać, czy rzeczywiście użytkownicy wpisują krótsze wartości, niż się spodziewaliśmy.
SELECT LENGTH(adres_email) FROM klienci;
3. Ucinanie zbyt długich wartości
Jeśli kolumna hasło powinna mieć maksymalnie 20 znaków, możemy użyć LENGTH, aby znaleźć rekordy, które są dłuższe:
SELECT * FROM uzytkownicy WHERE LENGTH(haslo) > 20;
4. Sortowanie według długości tekstu
Możemy także użyć funkcji LENGTH do sortowania rekordów według długości tekstu:
SELECT nazwa FROM produkty ORDER BY LENGTH(nazwa) DESC;
LENGTH w popularnych systemach baz danych
W zależności od używanej platformy bazy danych, funkcja LENGTH może działać trochę inaczej.
- MySQL / MariaDB:
LENGTHzwraca liczbę bajtów, aCHAR_LENGTHliczbę znaków. - PostgreSQL:
LENGTHdziała jakCHAR_LENGTHw MySQL i zwraca liczbę znaków, nie bajtów. - SQLite:
LENGTHzwraca liczbę znaków, nie bajtów. - Oracle: Wymaga użycia
LENGTHB, aby zwrócić długość w bajtach, aLENGTHzwraca liczbę znaków.
Podsumowanie
Funkcja LENGTH jest niezwykle przydatna w SQL, ale warto pamiętać, że jej działanie może się różnić w zależności od bazy danych. Czasami lepszym wyborem będzie użycie CHAR_LENGTH, jeśli pracujemy z tekstami w różnych systemach kodowania.
Inny ciekawy artykuł:
Jak działa CHAR_LENGTH w języku SQL? Przykłady zastosowania
Opanuj SQL z moim kursem!
Poznasz zarówno podstawy, jak i zaawansowane zapytania analityczne (CTE, subqueries, window functions). Nauczysz się pracować na różnych silnikach – na kursie pracujemy zarówno na MySQL, jak i na Postgres. Wszystko zainstalujemy na Twoim komputerze, plus dostaniesz mnóstwo zestawów danych do ćwiczeń.
Zostań analitykiem danych – dołącz do KajoDataSpace!
Najlepsza ścieżka do zawodu analityka danych. Dostęp do pełnych wersji kursów online z Excela, SQLa, PowerBI, Tableau i Pythona z certyfikatami!
🟨 Ekskluzywana ale pomagająca sobie społeczność.
🟩 Ponad 75 godzin materiałów video.
🟨 Spotkania LIVE co miesiąc.
🟩 Mój osobisty mentoring.

