Funkcje znakowe w SQL Server

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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

31 komentarzy “Funkcje znakowe w SQL Server”