
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:
LENGTH
zwraca liczbę bajtów, aCHAR_LENGTH
liczbę znaków. - PostgreSQL:
LENGTH
działa jakCHAR_LENGTH
w MySQL i zwraca liczbę znaków, nie bajtów. - SQLite:
LENGTH
zwraca liczbę znaków, nie bajtów. - Oracle: Wymaga użycia
LENGTHB
, aby zwrócić długość w bajtach, aLENGTH
zwraca 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, Tableau i Pythona z certyfikatami + specjalistycznych webinarów z PowerBI.
Ekskluzywana ale pomagająca sobie społeczność.
Ponad 61 godzin materiałów video.
Spotkania LIVE co miesiąc.
Mój osobisty mentoring.