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

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

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

KajoDataSpace