
Jednym z istotnych elementów w SQL jest funkcja CHAR_LENGTH
, która pozwala na określenie liczby znaków w łańcuchu tekstowym. To niezwykle przydatne narzędzie w sytuacjach, gdy muszę sprawdzić długość wartości w kolumnach typu VARCHAR
czy TEXT
. Przyjrzyjmy się dokładnie, jak działa ta funkcja i jakie ma zastosowania.
Co to jest CHAR_LENGTH i jak działa?
Funkcja CHAR_LENGTH
zwraca liczbę znaków w danej wartości tekstowej. W przeciwieństwie do LENGTH
, która zwraca liczbę bajtów, CHAR_LENGTH
uwzględnia liczbę rzeczywistych znaków, co ma ogromne znaczenie przy pracy z tekstami w różnych kodowaniach, np. Unicode.
Składnia funkcji CHAR_LENGTH
Podstawowa składnia tej funkcji jest bardzo prosta:
CHAR_LENGTH(tekst)
Gdzie:
tekst
– dowolny ciąg znaków, którego długość chcę sprawdzić.
Przykłady zastosowania
Przykładowe zapytania
Spójrzmy na podstawowe przykłady użycia tej funkcji:
SELECT CHAR_LENGTH('SQL jest super!') AS dlugosc;
Wynik:
dlugosc |
---|
15 |
Znaki interpunkcyjne oraz spacje również są liczone, stąd wynik 15.
Użycie CHAR_LENGTH w tabeli
Załóżmy, że mamy tabelę uzytkownicy
:
CREATE TABLE uzytkownicy (
id INT PRIMARY KEY,
imie VARCHAR(50)
);
Wstawmy kilka wartości:
INSERT INTO uzytkownicy (id, imie) VALUES
(1, 'Adam'),
(2, 'Joanna'),
(3, 'Mariusz');
Teraz możemy użyć CHAR_LENGTH
do sprawdzenia długości imion:
SELECT imie, CHAR_LENGTH(imie) AS dlugosc FROM uzytkownicy;
Wynik:
imie | dlugosc |
---|---|
Adam | 4 |
Joanna | 6 |
Mariusz | 7 |
Różnice między CHAR_LENGTH a LENGTH
Czasami można spotkać się z funkcją LENGTH
zamiast CHAR_LENGTH
. Oto kluczowe różnice:
CHAR_LENGTH
zwraca liczbę znaków.LENGTH
zwraca liczbę bajtów, co może prowadzić do różnych wyników w przypadku znaków Unicode.
Przykład:
SELECT CHAR_LENGTH('Łódź') AS znaki, LENGTH('Łódź') AS bajty;
Wynik w bazie danych obsługującej UTF-8 może wyglądać tak:
znaki | bajty |
---|---|
5 | 7 |
Jest więcej bajtów niż rzeczywistych znaków, ponieważ litera „Ł” zajmuje więcej niż jeden bajt.
Praktyczne zastosowania CHAR_LENGTH
Filtrowanie danych
Możemy użyć tej funkcji do znalezienia rekordów, które mają określoną długość tekstu.
SELECT * FROM uzytkownicy WHERE CHAR_LENGTH(imie) > 5;
Zwroci to osoby, których imię ma więcej niż 5 znaków.
Walidacja danych
Mogę użyć CHAR_LENGTH
do sprawdzania długości danych przed ich zapisaniem – na przykład w ograniczeniach CHECK
:
ALTER TABLE uzytkownicy ADD CONSTRAINT sprawdz_imie CHECK (CHAR_LENGTH(imie) >= 3);
Podsumowanie
Funkcja CHAR_LENGTH
jest niezwykle przydatna w SQL, gdy potrzebuję sprawdzić długość tekstu, porównać wartości czy filtrować dane. Jest ona szczególnie ważna w bazach danych obsługujących wielobajtowe kodowania znaków, gdzie liczenie znaków i bajtów to nie to samo. Mam nadzieję, że powyższe przykłady pomogą w lepszym zrozumieniu tej funkcji i jej praktycznych zastosowań.
Inny ciekawy artykuł:
Jak działa SECOND 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.