Blog JSystems - uwalniamy wiedzę!

Szukaj

Funkcje tekstowe, w skrócie

Przykład kilku funkcji tekstowych:

SELECT UPPER(Imie), LEN(Imie), SUBSTRING(Imie, 1, 3)
FROM Klienci;

Coalesce

coalesce (null, wartość zamienna) – podmienia wartości puste (null) na podaną wartość zstępczą. Wartość zastępcza musi być tego samego typu, co badana kolumna.

select FirstName, MiddleName, coalesce(middleName, ‘brak danych’) from SalesLT.Customer;

28.png (755×338)

W trzeciej kolumnie, każde wystąpienie null zostało zastąpione tekstem ‘brak danych’.

Łączenie ciągów za pomocą operatora [+]

string+string – połączy ciągi znakowe w jeden.

select FirstName, LastName, FirstName+LastName FullName from SalesLT.Customer;

29.png (903×317)

Standard SQL określa, że połączenia ze znacznikiem null powinny dawać wartość null – tak też domyślnie działa system SQL Server.

select FirstName, MiddleName, LastName, FirstName+MiddleName+LastName FullName from SalesLT.Customer;

30.png (720×338)

Czwarta kolumna przedstawia „sklejone” zawartości pozostałych kolumn. W przypadku wystąpienia po drodze wartości null, ostatnia kolumna również zwróciła wartość null. Aby nie otrzymywać przy takim połączeniu pustych wyników należy zastosować funkcję coalesce, za pomocą której pozbędziemy się pustych wartości.

select FirstName, MiddleName, LastName, FirstName+coalesce(MiddleName,’’)+LastName FullName from SalesLT.Customer;

31.png (857×338)

W tym przykładzie, w przypadku wystąpienia wartości null, „doklejane” było puste wyrażenie, dzięki czemu w czwartej kolumnie, każde pole przedstawia już wartości znakowe.

Upper

upper (wyrażenie) - zwiększa cały ciąg tekstowy.

select Name, upper(Name) from SalesLT.Product;

32.jpg (742×342)

Zwiększone zostały wszystkie litery w drugiej kolumnie wyświetlenia. Jak widać, kolumny z danymi na których użyto funkcji, tracą swoją nazwę. Najprostszą metodą by mieć informację jakie dane przechowuje taka kolumna jest zaaliasowanie jej w odpowiedni sposób.

select Name, upper(Name) “zwiększone nazwy produktów” from SalesLT.Product;

33.jpg (803×354)

Zwiększone zostały wszystkie litery w drugiej kolumnie wyświetlenia.

Lower

lower (wyrażenie) - zmniejsza wszystkie litery.

select Name, lower(Name) from SalesLT.Product;

34.jpg (746×338)

Zmniejszone zostały wszystkie litery w drugiej kolumnie wyświetlenia.

Substring

substring (string, start, length) – wydobywa ciąg znaków rozpoczynając od znaku, który określa pierwszy parametr, którego liczbę znaków określa drugi parametr.

select FirstName, substring(FirstName, 1, 3) from SalesLT.Customer;

35.png (781×321)

Left

left (string, n)  -  wydobywa ciąg znaków rozpoczynając od lewej strony, którego liczbę znaków określa podany parametr.

select FirstName, left(FirstName, 3) from SalesLT.Customer;

36.png (692×328)

Druga kolumna przedstawia wycięte trzy znaki, z kolumny z imionami, rozpoczynając od lewej strony.

Right

right (string, n)  -  wydobywa ciąg znaków rozpoczynając od prawej strony, którego liczbę znaków określa podany parametr.

select FirstName, right(FirstName, 3) from SalesLT.Customer;

37.png (703×328)

Replace

replace (string, substring1, substring2)  - funkcja podmienia w ciągu string, wszystkie wystąpienia ciągu substring1, na substring2.

select Name, replace(Name, ‘A’, ‘XXX’) from SalesLT.Product;

38.jpg (699×317)

Wszystkie wystąpienia A zostały zamienione na XXX, w drugiej kolumnie wyświetlenia.

Len

len (string)  - zwraca ilość znaków w ciągu string, jeśli string ma wartość null funkcja zwraca null, a nie (jak byłoby intuicyjnie) 0.

select MiddleName, len(MiddleName) from SalesLT.Customer;

39.png (672×317)

Druga kolumna przedstawia ilość znaków ciągu znajdującego się w pierwszej kolumnie.

Datalength

datalength (string)  - zwraca liczbę bajtów jakie zajmuje string, jeśli string ma wartość null funkcja (tak jak w przypadku funkcji len) zwraca 0. Dodatkowo funkcja ta uwzględnia w wyniku spacje końcowe.

select MiddleName, datalength(MiddleName) from SalesLT.Customer;

40.png (746×317)

Charindex

charindex (substring, string[, start_pos])  - zwraca położenie pierwszego wystąpienia, pierwszego argumentu, wewnątrz drugiego. Opcjonalnie można podać trzeci argumenty wskazać położenie od którego funkcja ta ma rozpocząć wyszukiwanie. W przypadku braku trzeciego argumentu, funkcja rozpoczyna wyszukiwanie od pierwszego znaku. Jeśli wyszukiwany ciąg nie zostanie znaleziony, funkcja zwróci 0.

select Lastname, charindex(‘ar’,LastName, 2) from SalesLT.Customer;

41.png (780×317)

Powyżej widać,  że wyszukiwany ciąg został znaleziony w wierszach 2, 3, 5, 6, 8 i 9 za każdym razem na drugiej pozycji.

Patindex

patindex (pattern, string)  - zwraca położenie pierwszego wystąpienia wzorca wewnątrz ciągu. Jeśli wyszukiwany ciąg nie zostanie znaleziony, funkcja zwróci 0.

select Lastname, patindex(‘%rr%’,LastName) from SalesLT.Customer;

42.png (757×325)

Powyżej widać,  że wyszukiwany ciąg został znaleziony w wierszach 2, 3, 5, 6, za każdym razem na trzeciej pozycji.

Replicate

replicate (string, n)  - funkcja powiela ciąg string, zadaną ilość n razy.

select LastName, replicate(LastName, 3) from SalesLT.Customer;

43.png (725×323)

Stuff

stuff (string, position, delete_length, insertstring)  - funkcja z ciągu znaków, usuwa podciąg ze wskazanego miejsca i o wskazanej długości znaków oraz w to miejsce wstawia nowy podciąg.

select LastName, stuff(LastName, 2, 1, ‘abc’) from SalesLT.Customer;

44.png (791×323)

W drugiej kolumnie można zauważyć, że został usunięty jeden znak, z drugiej pozycji i został zastąpiony ciągiem ‘XXX’.

Ltrim

ltrim (string)  - zwraca ciąg wyjściowy, jeśli występowały w nim spacje od lewej strony (początkowe) to je usuwa.

Rtrim

rtrim (string)  - działa jak powyższa funkcja, z tą różnicą, że spacje usuwa od prawej strony (końcowe).

 

Baner szkolenia Kompleksowe SQL w Microsoft SQL Server w JSystems, terminy gwarantowane

Szkolenie Kompleksowe SQL w Microsoft SQL Server →

To szkolenie może być dofinansowane dla Ciebie z KFS lub BUR.

★★★★★Średnia ocena naszych szkoleń w Google: 5/5

Najczęściej zadawane pytania

Do czego służy funkcja coalesce?
Funkcja coalesce podmienia wartości puste (null) na podaną wartość zastępczą, która musi być tego samego typu co badana kolumna. Jest przydatna między innymi przy łączeniu ciągów, żeby wystąpienie null nie zwróciło pustego wyniku - w miejsce null można wtedy podstawić pusty ciąg.
Dlaczego łączenie ciągów operatorem plus może zwrócić null?
Standard SQL określa, że połączenie z wartością null powinno dawać null, i tak domyślnie działa SQL Server. Jeśli któraś z łączonych kolumn zawiera null, cały wynik będzie null. Aby tego uniknąć, stosuje się coalesce, które zamienia puste wartości na pusty ciąg przed połączeniem.
Czym różnią się funkcje len i datalength?
Funkcja len zwraca liczbę znaków w ciągu, a dla wartości null zwraca null, a nie zero. Funkcja datalength zwraca liczbę bajtów zajmowanych przez ciąg, dla null zwraca zero, a dodatkowo uwzględnia w wyniku spacje końcowe.
Jak działają funkcje substring, left i right?
substring wydobywa ciąg znaków, zaczynając od pozycji podanej pierwszym parametrem, o długości określonej drugim parametrem. left wycina zadaną liczbę znaków licząc od lewej strony, a right zadaną liczbę znaków licząc od prawej strony ciągu.
Czym różnią się charindex i patindex?
charindex zwraca pozycję pierwszego wystąpienia szukanego podciągu w ciągu, opcjonalnie od wskazanej pozycji startowej. patindex zwraca pozycję pierwszego wystąpienia wzorca w ciągu. Obie funkcje zwracają zero, gdy szukany fragment nie zostanie znaleziony.
Dlaczego kolumna z funkcją traci swoją nazwę i jak to naprawić?
Gdy na kolumnie użyjesz funkcji, kolumna wynikowa traci pierwotną nazwę. Najprostszym sposobem, aby zachować czytelną informację o zawartości, jest zaaliasowanie takiej kolumny, czyli nadanie jej własnej nazwy w zapytaniu.

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...