Baza wiedzy / SQL
Jak działa LENGTH w języku SQL? Przykłady zastosowania

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.
