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

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: LENGTH zwraca liczbę bajtów, a CHAR_LENGTH liczbę znaków.
  • PostgreSQL: LENGTH działa jak CHAR_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, a LENGTH 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

KajoDataSpace