Microsoft SQL Server
krzyż stosować
Szukaj…
Połącz wiersze tabeli z dynamicznie generowanymi wierszami z komórki
CROSS APPLY umożliwia „łączenie” wierszy z tabeli z dynamicznie generowanymi wierszami zwracanymi przez niektóre funkcje wartości tabeli.
Wyobraź sobie, że masz tabelę firmową z kolumną zawierającą tablicę produktów (kolumna ProductList) oraz funkcję, która analizuje te wartości i zwraca zestaw produktów. Możesz wybrać wszystkie wiersze z tabeli firmowej, zastosować tę funkcję w kolumnie ProductList i „połączyć” wygenerowane wyniki z macierzystym wierszem firmy:
SELECT *
FROM Companies c
CROSS APPLY dbo.GetProductList( c.ProductList ) p
Dla każdego wiersza wartość funkcji ProductList zostanie przekazana do funkcji, a funkcja zwróci te produkty jako zestaw wierszy, które można połączyć z wierszem nadrzędnym.
Połącz wiersze tabeli z tablicą JSON przechowywaną w komórce
CROSS APPLY umożliwia „łączenie” wierszy z tabeli z kolekcją obiektów JSON przechowywanych w kolumnie.
Wyobraź sobie, że masz tabelę firmową z kolumną zawierającą tablicę produktów (kolumna ProductList) sformatowaną jako tablica JSON. Funkcja wartości tabeli OPENJSON może analizować te wartości i zwracać zestaw produktów. Możesz wybrać wszystkie wiersze z tabeli firmowej, przeanalizować produkty JSON za pomocą OPENJSON i „połączyć” wygenerowane wyniki z macierzystym wierszem firmy:
SELECT *
FROM Companies c
CROSS APPLY OPENJSON( c.ProductList )
WITH ( Id int, Title nvarchar(30), Price money)
Dla każdego wiersza wartość komórki ProductList zostanie przekazana do funkcji OPENJSON, która przekształci obiekty JSON w wiersze o schemacie zdefiniowanym w klauzuli WITH.
Filtruj wiersze według wartości tablic
Jeśli przechowujesz listę znaczników w wierszu jako wartości oddzielone przecinkami, funkcja STRING_SPLIT umożliwia przekształcenie listy znaczników w tabelę wartości. CROSS APPLY umożliwia „łączenie” wartości analizowanych przez funkcję STRING_SPLIT z wierszem nadrzędnym.
Wyobraź sobie, że masz tabelę produktów z kolumną zawierającą tablicę tagów oddzielonych przecinkami (np. Promocja, wyprzedaż, nowe). STRING_SPLIT i CROSS APPLY umożliwiają łączenie wierszy produktów za pomocą ich tagów, dzięki czemu można filtrować produkty według tagów:
SELECT *
FROM Products p
CROSS APPLY STRING_SPLIT( p.Tags, ',' ) tags
WHERE tags.value = 'promo'
Dla każdego wiersza wartość komórki Tagi zostanie przekazana do funkcji STRING_SPLIT, która zwróci wartości tagu. Następnie możesz filtrować wiersze według tych wartości.
Uwaga: funkcja STRING_SPLIT nie jest dostępna przed SQL Server 2016