Dziś krótki artykuł z serii co nowego w SQL Server 2016 (wszystkie posty jakie udało się napisać w ramach tej serii znajdziecie tutaj). Pod lupę weźmiemy dwie nowe funkcje tj. STRING_SPLIT oraz STRING_ESCAPE.
STRING_SPLIT jest funkcją o dosyć ciekawej konstrukcji, która zwraca części pojedynczej wartości tekstowej jako odrębne wiersze. Aby lepiej zrozumieć jej działanie lepiej będzie przedstawić to na przykładzie. Tak więc mamy poniższy ciąg znaków:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur et mattis nisi, in euismod quam.
Naszym celem jest to aby ciąg ten został podzielony w taki sposób, aby każde słowo było traktowane jako osobny wiersz. Z pomocą nam przychodzi wspomniana wcześniej STRING_SPLIT, która za pierwszy parametr przyjmuje właśnie ciąg znaków za drugi natomiast separator
SELECT VALUE FROM STRING_SPLIT('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur et mattis nisi, in euismod quam. ',' ')
Jak widać funkcje traktujemy jako tabelaryczną natomiast wartość poszczególnych rekordów są dostępne w jedynej kolumnie zwracanej przez tą funkcję o nazwie value. Efekt działania powyższego zapytania przedstawia się następująco:
Wcześniej osiągnięcie takiego efektu naprawdę wymagało dużo większego nakładu pracy i kombinowania – na szczęście od wersji 2016 SQL Server nie musimy się tym już martwić. Drugą funkcją jaką chciałem dziś przedstawić jest STRING_ESCAPE, która pozwala wyświetlić znaki specjalne (np. białe znaki) we wprowadzonym tekście. Drugi parametr określa zestaw reguł jaki ma być zastosowany do rozkodowania znaków – póki co może on przyjąć jedynie wartość json. Napiszmy proste zapytanie i przyjrzyjmy się rezultatowi:
SELECT STRING_ESCAPE(' ','json')
Zwrócona została następująca wartość:
gdzie \r oznacza powrót karetki (ang. Carriage return) czyli powrót do pierwszego znaku w linii oraz \n oznacza nową linię. Oczywiście to nie wszystko np. taki zapis:
SELECT STRING_ESCAPE(' " /','json')
zwraca następującą wartość:
gdzie \t oznacza użycie tabulatora \” oznacza użycie cudzysłowie a np. \/ oznacza użycie popularnego slasha. Dzięki takiemu zapisowi możemy łatwo wyśledzić poszczególne znaki specjalne i np. zinterpretować je w naszej aplikacji.
Jest jeszcze trzecia funkcja o nazwie STRING_AGG, której działanie jest odwrotne do STRING_SPLIT tzn. zamienia wartości kilku wierszy w jeden ciąg znaków oddzielonych separatorem (np. przecinkiem). Jest ona bardzo pożądana przez deweloperów już od bardzo dawna jednakże nie mogę jej przedstawić gdyż… nie jest ona zaimplementowana w SQL Server 2016! Używać jej możemy dopiero w SQL Server vNext czyli implementacji naszej ulubionej bazy danych na Linux, która jest tak naprawdę najnowszą jej wersją. Pozostaje mieć nadzieję, że pojawi się ona kiedyś w standardowej edycji na Windows. Mam nadzieję, że przedstawione funkcje pomogą Wam rozwiązać konkretne problemy biznesowe waszej bazy, przy okazji zachęcam do zapoznania się z pozostałymi wpisami w serii Poznaj SQL Server 2016.
- Avoiding Issues: Monitoring Query Pushdowns in Databricks Federated Queries - October 27, 2024
- Microsoft Fabric: Using Workspace Identity for Authentication - September 25, 2024
- Executing SQL queries from Azure DevOps using Service Connection credentials - August 28, 2024
Last comments