Poniżej lista najczęściej wykorzystywanych funkcji znakowych w SQL Server. Wykorzystanie funkcji w kodzie SQL polega na wprowadzeniu jej najczęściej w klauzuli SELECT podczas obróbki danych.
LEN(tekst) – Funkcja zwraca liczbę znaków w podanym ciągu tekstowym.
USE [AdventureWorks2014]; go SELECT len(name) as wynik_1, len('jakiś tekst') as wynik_2 from HumanResources.Department; go
LOWER(tekst) – Funkcja zamienia wszystkie litery w ciągu znaków na małe litery.
SELECT name, lower(name) as wynik1, lower('Dowolny ciąg tekstowy') as wynik2 from production.ScrapReason ; go
SUBSTRING(tekst1, numer1, numer2)– Funkcja wycina z ciągu znaków string1 ciąg rozpoczynający się w pozycji numer1 o długości numer2. Poniżej przykład z wykorzystaniem bazy AdventureWorks2014.
SELECT name, substring(name,5,10) as wynik1, substring('Dowolny ciąg tekstowy',10,8) as wynik2 from production.ScrapReason ; go
UPPER(tekst) – Funkcja zamienia wszystkie litery w ciągu znaków na wielkie litery.
SELECT name, upper(name) as wynik1, upper('Dowolny ciąg tekstowy') as wynik2 from production.ScrapReason ; go
REPLACE(tekst1, tekst2, tekst3) – Funkcja zamienia w ciągu tekstowym tekst1 znaki podane w argumencie tekst2 na znaki podane w argumencie tekst3. Zamienić możemy zarówno pojedynczy znak, jak i całe frazy.
USE [AdventureWorks2014]; go SELECT name, replace(name, 'c','a') as wynik1, replace(name, ' ','_') as wynik2 from HumanResources.Department; go
LTRIM(tekst) – Funkcja usuwa spacje z lewej strony ciągu tekstowego.
USE [AdventureWorks2014]; go select ltrim(' Jakiś tekst ') ; go
RTRIM(tekst) – Funkcja usuwa spacje z prawej strony ciągu tekstowego.
USE [AdventureWorks2014]; go select rtrim(' Jakiś tekst ') ; go
LEFT(tekst) – Funkcja zwraca wybraną liczbę znaków z ciągu tekstowego zaczynając od lewej strony.
USE [AdventureWorks2014]; go SELECT left(firstname,1) as wynik1 ,left(firstname,2) as wynik2 from person.person; go
RIGHT(tekst)– Funkcja zwraca wybraną liczbę znaków z ciągu tekstowego zaczynając od prawej strony.
USE [AdventureWorks2014]; go SELECT right(firstname,1) as wynik1 ,right(firstname,2) as wynik2 from person.person; go
CHARINDEX(tekst1, tekst2, numer1) – Funkcja wyszukuje ciągu znaków tekst1 w ciągu znaków tekst2 zaczynając od kolejnego znaku podanego w argumencie numer1. Argument number1 jest opcjonalny. Wynikiem funkcji jest kolejna pozycja, którą zajmuje szukana fraza w ciągu string2. Poniżej przykład wykorzystania funkcji pokazany na bazie AdventureWorks2014.
SELECT name, charindex('too', name) as wynik1, charindex('too', name, 14) as wynik2 from production.ScrapReason ; go
Poniżej pozostałe funkcje znakowe. Ich znajomość na początku Twojej pracy w SQL Server nie jest konieczna. Warto z nich korzystać, gdy mamy do zrobienia niestandardowe zadania wymagające wykorzystania tych funkcji.
ASCII() – Funkcja zamienia podany w argumencie znak na kolejny numer znaku w kodzie ASCII.
SELECT ASCII('a') AS KOD_ASCII_LITERY_a, ascii('A') AS KOD_ASCII_LITERY_A, ASCII(6) AS KOD_ASCII_LICZBY_6; go
CHAR() – Odwrotność funkcji ASCII. Zamienia kolejny znak numeryczny na znak w kodzie ASCII.
SELECT char(12) AS ZNAK_ASCII_12, char(100) AS ZNAK_ASCII_100, char(6) AS ZNAK_ASCII_6; go
SPACE(numer) – Funkcja zwraca określoną w argumencie liczbę spacji
USE [AdventureWorks2014]; go select space(456) from person.Person; go
STUFF(tekst1, start, długość, tekst2) – Funkcja zamienia znaki z ciągu tekst1 na znaki zawarte w ciągu tekst2. Zamiana zaczyna się od pozycji start określającej pozycję pierwszego znaku, który będzie zamieniony. Następnie wycina z ciągu tekst1 liczbę znaków określoną w argumencie długość i wprowadza w te miejsce ciąg znaków tekst2. Poniżej przykład zastosowania tej funkcji.
use adventureworks2014; go select AddressLine1, STUFF(AddressLine1, 2 ,10, 'DD') from person.Address; go
UNICODE() – Funkcja zamienia podany w argumencie na kolejny numer znaku w kodzie UNICODE.
SELECT UNICODE('a') AS KOD_ASCII_LITERY_a, UNICODE('A') AS KOD_ASCII_LITERY_A, UNICODE(6) AS KOD_ASCII_LICZBY_6; go
CONCAT(tekst1, tekst2, …,tekst_n) – Funkcja łączy ze sobą podane ciągi znaków. Działa identycznie jak operator „+”.
SELECT concat('ciąg znaków1','ciąg znaków2') as wynik1, ('ciąg znaków1' + 'ciąg znaków2') as wynik1 ; go
REVERSE(tekst) – Funkcja zwraca podany ciąg znaków w postaci odwrotnej, a więc od końca.
SELECT reverse('ABCDEFGH') as wynik1, reverse('acnok do ynatyzc wókanz gaic') as wynik2 ; go
DIFFERENCE
SOUNDEX
STR
REPLICATE
FORMAT
31 komentarzy “Funkcje znakowe w SQL Server”
Bardzo ciekawe ujęcie tematu. Niestety nie mogę zgodzić się ze wszystkimi stwierdzeniami.
Gratulacje dla autora. Interesujący artykuł, a to w
dzisiejszych czasach rzadkość!
Nie znam się do końca na tym temacie ale miło się czyta.
Zagadnienie nie zostało przedstawione w pełni, wiele elementów zostało pominiętych ale i tak uważam, że jest nieźle.
Zdecydowanie wyróżnia się na tle innych:)
Nowatorskie podejście do tematu. Gratulacje dla autora.
Ciekawy artykuł, wiele wnoszący. Czekam na więcej
Interesujący temat, doskonale przedstawione zagadnienie.
Pozdrawiam
W końcu jakieś konkretne ujęcie tematu. Bez rozpisywania się i przysłowiowego lania wody.
Zwięźle i na temat. I tak powinno być!
W końcu ktoś poruszył ten wątek. Brawo dla autora.
Pozdrawiam
Czy tak jest w rzeczywistości nie wiem, poza tym z
wieloma elementami nie mogę się zgodzić, ale i tak
jest całkiem nieźle.
W końcu ktoś poruszył ten wątek. Brawo dla autora. Pozdrawiam
Ciekawy artykuł, wiele wnoszący. Czekam na więcej
Super artykuł. Chętnie będę się przyglądać kolejnym wpisom autora,
bo zapowiada się nieźle.
Super artykuł. Chętnie będę się przyglądać kolejnym wpisom autora,
bo zapowiada się nieźle.
Świetny artykuł. Interesujący, konkretny, życiowy. Nic dodać nic
ująć.
Dobry, błyskotliwy, nowatorski – nic dodać, nic ująć.
Oby więcej takich artykułów na stronach.
Super strona i jeszcze lepszy artykuł. Ciekawy, przemyślany, nowatorski.
Czekam na więcej
Bardzo fascynująca strona bez wątpienia będę częściej ją odwiedzać. Nie mogę się doczekać kiedy przeczytam następne porady.
Fajnie napisany tekst, o by więcej takich w polskim internecie.
Ciekawy artykuł, wiele wnoszący. Czekam na więcej
W końcu jakieś konkretne ujęcie tematu.
Bez rozpisywania się i przysłowiowego lania wody.
Zwięźle i na temat. I tak powinno być!
Aż miło się czyta. I ile można wynieść z tego artykułu.
Po prostu super
Dobry, błyskotliwy, nowatorski – nic dodać, nic
ująć. Oby więcej takich artykułów na stronach.
Hmmm, ciekawe. Czekam na więcej
excellent site
Świetny artykuł. Interesujący, konkretny, życiowy.
Nic dodać nic ująć.
Artykuł genialny. Czekam na więcej
Świetny artykuł. Interesujący, konkretny, życiowy.
Nic dodać nic ująć.
Świetny artykuł. Interesujący, konkretny, życiowy. Nic dodać nic ująć.
Hmmm, ciekawe. Czekam na więcej
RIGHT(tekst)– Funkcja zwraca wybraną liczbę znaków z ciągu tekstowego zaczynając od (!lewej)strony.
Literówka, powinno być z prawej strony.
SELECT right(firstname,1) as wynik1 ,right(firstname,2) as wynik2 from person.person;