
Praca z danymi w formacie JSON w bazach danych SQL stała się standardem w wielu nowoczesnych aplikacjach. Jednym z kluczowych narzędzi do obsługi danych JSON w SQL Server jest funkcja JSON_VALUE
. W tym artykule przyjrzymy się, jak działa JSON_VALUE
w języku SQL oraz przedstawimy praktyczne przykłady zastosowania.
Co to jest JSON_VALUE?
JSON_VALUE
to funkcja systemowa w SQL Server (od wersji 2016), która pozwala na wydobywanie wartości skalarnych z dokumentów JSON przechowywanych w kolumnach tekstowych. Funkcja ta zwraca wartości w formacie nvarchar
, co pozwala na ich dalszą obróbkę w zapytaniach SQL.
Składnia funkcji JSON_VALUE
JSON_VALUE(źródło_JSON, ścieżka_JSON)
Parametry:
- źródło_JSON – Kolumna lub wartość tekstowa zawierająca dane w formacie JSON.
- ścieżka_JSON – Określa lokalizację wartości, którą chcemy wyodrębnić z dokumentu JSON.
Ścieżka JSON używa standardowej notacji dolara ($
) jako punktu początkowego i może zawierać nazwy pól oraz indeksy w tablicach.
Prosty przykład użycia JSON_VALUE
Aby lepiej zrozumieć funkcję JSON_VALUE
, spójrzmy na prosty przykład:
DECLARE @json NVARCHAR(MAX) =
'{
"id": 1,
"nazwa": "Laptop",
"cena": 2500
}';
SELECT
JSON_VALUE(@json, '$.nazwa') AS Produkt,
JSON_VALUE(@json, '$.cena') AS Cena;
Wynik:
Produkt | Cena |
---|---|
Laptop | 2500 |
Jak wydobywać wartości z tablic JSON?
JSON może zawierać tablice, co wymaga użycia indeksów do pobierania konkretnych elementów. Oto przykład:
DECLARE @json NVARCHAR(MAX) =
'{
"produkty": [
{ "nazwa": "Laptop", "cena": 2500 },
{ "nazwa": "Smartfon", "cena": 1500 }
]
}';
SELECT
JSON_VALUE(@json, '$.produkty[0].nazwa') AS PierwszyProdukt,
JSON_VALUE(@json, '$.produkty[1].cena') AS CenaDrugiegoProduktu;
Wynik:
PierwszyProdukt | CenaDrugiegoProduktu |
---|---|
Laptop | 1500 |
Ograniczenia funkcji JSON_VALUE
Choć JSON_VALUE
jest niezwykle użyteczne, ma kilka istotnych ograniczeń:
- Może zwracać tylko wartości skalarne (tekst, liczby, wartości logiczne).
- Nie może zwrócić całej tablicy JSON – do tego służy
JSON_QUERY
. - Jeśli ścieżka JSON jest niepoprawna lub wartość nie istnieje, zwraca
NULL
. - Nie obsługuje dynamicznych ścieżek JSON – muszą być one podane jawnie.
JSON_VALUE w praktyce – zapytania do tabeli
Załóżmy, że mamy tabelę Zamówienia
, w której kolumna DaneJSON
przechowuje dane o zamówieniach w formacie JSON:
CREATE TABLE Zamówienia (
Id INT PRIMARY KEY,
DaneJSON NVARCHAR(MAX)
);
INSERT INTO Zamówienia (Id, DaneJSON)
VALUES
(1, '{ "klient": "Jan Nowak", "wartosc": 300 }'),
(2, '{ "klient": "Anna Kowalska", "wartosc": 450 }');
Teraz możemy wydobyć konkretne wartości dla każdego zamówienia:
SELECT
Id,
JSON_VALUE(DaneJSON, '$.klient') AS Klient,
JSON_VALUE(DaneJSON, '$.wartosc') AS WartoscZamowienia
FROM Zamówienia;
Wynik:
Id | Klient | WartoscZamowienia |
---|---|---|
1 | Jan Nowak | 300 |
2 | Anna Kowalska | 450 |
Podsumowanie
Funkcja JSON_VALUE
w języku SQL to potężne narzędzie umożliwiające wydobywanie wartości skalarne z dokumentów JSON. Dzięki niej możemy wygodnie analizować i przekształcać dane JSON zapisane w bazie danych SQL Server. Warto jednak pamiętać o jej ograniczeniach i stosować ją w odpowiednich scenariuszach.
Inny ciekawy artykuł:
Jak działa JSON_EXTRACT 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.