Funkcje SPLIT_STRING i STRING_AGG w SQL Server


Tekst do kolumn i wartości kolumny do tekstu w MsSQL

W jaki sposób w MsSQL zagregować rekordy w kolumnie do zwykłego tekstu lub też wykonać działanie odwrotne, a więc jak rozdzielić tekst rozdzielony np średnikiem, bądź spacją na poszczególne rekordy? Do tych celów w SQL Server służą funkcje SPLIT_STRING i STRING_AGG, które opisuję w tym artykule. Przykłady zawarte poniżej przeprowadzone zostały na danych w najprostszej formie. Z funkcji możesz korzystać w SQL Server 2016 i wersjach późniejszych.

Funkcja STRING_AGG w MsSQL – Przykład

Jeśli posiadasz dane zawarte w kolumnie i chciałbyś z nich utworzyć jeden ciąg tekstowy np rozdzielony średnikiem lub spacją, najlepiej skorzystać z funkcji MsSQL STRING_AGG. Funkcja STRING_AGG agreguje dane zawarte w kolumnie danego rekordu do jednego ciągu tekstowego np rozdzielonego średnikami lub spacją. Zróbmy krótki przykład użycia funkcji STRING_AGG. Do celów przykładu utwórz tabelę wg. poniższego skryptu i zainsertuj do niej 4 przykładowe rekordy.

Utworzona tabela powinna wyglądać jak na poniższym screenie. Poniżej przykład użycia funkcji STRING_AGG w SQL Server. Jest to najprostszy przykład, w którym mamy do czynienia z jedną kolumną, którą chcemy zagregować do ciągu tekstowego.

SQL Server - funkcja STRING_AGG. rekordy w kolumnie w ciąg tekstowy

SQL Server – funkcja STRING_AGG. rekordy w kolumnie w ciąg tekstowy

Ok, mamy już przykładową tabelę. W Jaki sposób teraz zagregować dane z rekordów, by utworzyły jeden ciąg tekstowy rozdzielany znakiem np średnikiem? Poniżej skrypt, za pomocą którego możemy to zrobić:

Jak widzisz, w pierwszym argumencie funkcji STRING_AGG wprowadzamy nazwę kolumny, którą chcemy zagregować do tekstu. Wynik działania funkcji załączam na poniższym screenie:

SQL Server - funkcja STRING_AGG. Agregacja rekordów w ciąg String

SQL Server – funkcja STRING_AGG. Agregacja rekordów w ciąg String

Funkcja SPLIT_STRING w MsSQL – Przykład

Funkcja SPLIT_STRING w SQL Server służy do podziału ciągu tekstowego na rekordy. Ciąg tekstowy powinien być rozdzielony jakimś znakiem np średnikiem lub spacją. Funkcja SPLIT_STRING wykonuje działanie odwrotne do funkcji STRING_AGG. By zobrazować działanie funkcji stwórzmy na początek prosty przykład bez użycia tabeli. Ciąg tekstowy, który chcemy rozdzielić i pokazać w rekordach kolumny zawarty jest w skrypcie

Jak widzisz w pierwszym argumencie funkcji STRING_SPLIT odwołujemy się do tekstu, który chcemy rozdzielić. Drugi argument to znak rozdzielający występujący w tym tekście, a więc np średnik. Poniżej wynik działania

SQL Server - funkcja STRING_SPLIT.Ciąg tekstowy w rekordy w kolumnie

SQL Server – funkcja STRING_SPLIT.Ciąg tekstowy w rekordy w kolumnie

Funkcje równie dobrze możemy wykorzystać na rekordach tabeli. Możemy za jej pomocą np rozdzielić dowolny tekst za pomocą spacji, a następnie sprawdzić statystykę wyrazów występujących w tekście za pomocą np funkcji agregującej COUNT.

Jeśli chciałbyś poszerzyć swoją wiedzę na temat SQL Server, zachęcam do zapoznania się z kursem SQL Server, który zamieszczam pod tym adresem: Kurs SQL Server. Odsyłam także do innych skryptów SQL Server.

Dodaj komentarz

Twój adres email nie zostanie opublikowany.