
Jeśli kiedykolwiek pracowałeś z danymi w formacie JSON w bazach danych SQL, na pewno natknąłeś się na funkcję JSON_EXTRACT. Jest to niezwykle przydatne narzędzie, które pozwala wydobywać konkretne wartości ze struktury JSON. W tym artykule wyjaśnię, jak działa JSON_EXTRACT w języku SQL na praktycznych przykładach.
Czym jest JSON_EXTRACT?
Funkcja JSON_EXTRACT służy do pobierania danych z kolumny zawierającej treść w formacie JSON. Dzięki niej możemy uzyskać dostęp do pojedynczych wartości, tablic czy nawet zagnieżdżonych obiektów.
Podstawowa składnia tej funkcji wygląda tak:
JSON_EXTRACT(json_doc, path)
json_doc– ciąg znaków w formacie JSONpath– ścieżka do wartości, którą chcemy pobrać
Przykłady użycia JSON_EXTRACT
Aby lepiej zobrazować działanie JSON_EXTRACT, posłużę się kilkoma praktycznymi przykładami.
1. Pobieranie pojedynczej wartości
Załóżmy, że w naszej bazie mamy tabelę users, a w jednej z kolumn przechowujemy dane w formacie JSON:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
user_data JSON
);
Dodajmy przykładowe dane:
INSERT INTO users (user_data) VALUES
('{"name": "Jan", "age": 30, "city": "Warszawa"}'),
('{"name": "Anna", "age": 25, "city": "Kraków"}');
Chcąc pobrać imię użytkownika, możemy wykonać zapytanie:
SELECT JSON_EXTRACT(user_data, '$.name') FROM users;
Wynik:
| JSON_EXTRACT(user_data, '$.name’) |
|---|
| „Jan” |
| „Anna” |
2. Pobieranie wartości zagnieżdżonych
Co jeśli mamy bardziej skomplikowaną strukturę danych?
INSERT INTO users (user_data) VALUES
('{"name": "Kuba", "contact": {"email": "kuba@example.com", "phone": "123-456-789"}}');
Aby pobrać numer telefonu:
SELECT JSON_EXTRACT(user_data, '$.contact.phone') FROM users;
Wynik:
| JSON_EXTRACT(user_data, '$.contact.phone’) |
|---|
| „123-456-789” |
3. Pobieranie wartości z tablicy
JSON często zawiera tablice wartości. Załóżmy, że mamy następującą strukturę:
INSERT INTO users (user_data) VALUES
('{"name": "Mateusz", "skills": ["SQL", "Python", "JavaScript"]}');
Aby pobrać pierwszy element z tablicy skills:
SELECT JSON_EXTRACT(user_data, '$.skills[0]') FROM users;
Wynik:
| JSON_EXTRACT(user_data, '$.skills[0]’) |
|---|
| „SQL” |
Różnica między JSON_EXTRACT a JSON_UNQUOTE
Być może zauważyłeś, że wartości zwracane przez JSON_EXTRACT są ujęte w cudzysłowy. Dzieje się tak, ponieważ funkcja zwraca wynik w typie JSON, nawet jeśli to zwykły ciąg znaków.
Jeśli chcemy pozbyć się cudzysłowów, możemy użyć JSON_UNQUOTE:
SELECT JSON_UNQUOTE(JSON_EXTRACT(user_data, '$.name')) FROM users;
Wynik:
| JSON_UNQUOTE(JSON_EXTRACT(user_data, '$.name’)) |
|---|
| Jan |
| Anna |
Obsługa wartości null
Gdy ścieżka wskazana w JSON_EXTRACT nie istnieje w JSON, funkcja zwraca NULL.
SELECT JSON_EXTRACT(user_data, '$.non_existing_key') FROM users;
Wynik:
| JSON_EXTRACT(user_data, '$.non_existing_key’) |
|---|
| NULL |
Podsumowanie
Funkcja JSON_EXTRACT w języku SQL to potężne narzędzie, które pozwala na skuteczne wydobywanie danych z obiektów JSON. Dzięki niej możemy:
- Pobierać pojedyncze wartości
- Przetwarzać zagnieżdżone obiekty
- Uzyskiwać dostęp do elementów tablic
Mam nadzieję, że teraz już wiesz, jak działa JSON_EXTRACT w języku SQL i jak go używać w praktyce.
Inny ciekawy artykuł:
Jak działa CASE_INSENSITIVE_COMPARE 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, PowerBI, Tableau i Pythona z certyfikatami!
🟨 Ekskluzywana ale pomagająca sobie społeczność.
🟩 Ponad 75 godzin materiałów video.
🟨 Spotkania LIVE co miesiąc.
🟩 Mój osobisty mentoring.

