Funkcje wbudowane SQL – cz.1

Dzisiejszy temat to właściwie teoria do przeczytania w każdej książce czy manualu – jednak skoro mamy mieć wszystko w jednym miejscu; jest to pozycja obowiązkowa.

W SQL jest wbudowanych wiele gotowych już funkcji, które ułatwiają nam życie. Po wywołaniu ich w poleceniu SELECT bądź innych poleceniach DML (data manipulation language – zapytania służące do manipulacji danymi), oraz podaniu argumentów – funkcje obliczają coś dla nas bądź też wykonują za nas pewne obliczenia.

Funkcje możemy zagnieżdżać w innych funkcjach i to dowolna ilość razy – to znaczy, że wartość zwrócona z jednej funkcji może być argumentem dla kolejnej funkcji itd.

Ponieważ sam język SQL ma wiele różnych funkcji – przytoczę tylko najczęściej używane lub zwyczajnie takie, którymi ja się posługuję najczęściej.

Funkcje znakowe

- lower (tekst), upper (text), initcap (text) – te funkcje zwracają ‚text’ zmieniając odpowiednio wielkość liter (na małe, na duże, zaczynające się od dużej litery)

- lpad (text, n [,text1])  , rpad (text, n [,text1]) – funkcja służąca do dopisywania z lewej lub prawej strony tekst1 w taki sposób aby text osiągał szerokość n znaków. Jeżeli text1 nie jest podany to text jest dopełniany spacjami.

- ltrim (text [,text1]), rtrim (text [,text2]) – usuwają z prawej lub lewej strony znaki z text, które znajdują się w text1. Jeżeli w text1 nie ma znaków to usuwane są spacje. ( na przykład ltrim (samouczek [,aue]) usunie nam z ‚samouczek’ litery aue dokładnie w takiej kolejności.)

- replace (text, text1 [,text2]) – chyba wszystko jasne w tej funkcji – czy aby na pewno? :) : podmieniamy wszystkie wystąpienia ciągu text1 w ciągu text na text2

- substr (text, m [,n]) – wycina z ciągu text n znaków począwszy od pozycji m. Jeśli nie podamy n to wycina wszystkie znaki od pozycji m do końca ciągu text. Jeśli chcemy wycinać znaki od końca ciągu text – musimy m ustawić na ujemne.

- to_char (liczba [,wzorzec]) – zamienia liczbę na postać ZNAKOWĄ podaną we wzorcu. O wzorcach później, chyba, że kogoś nagli to pytać, pisać itd :)

- to_number (text, [,wzorzec]) – zamienia ciąg ZNAKÓW na postać LICZBOWĄ oczywiście wg. wzorca

- length (text) – zwraca nam długość ciągu tekstu, jeśli text ma wartość NULL to zwraca nam oczywiście NULL (bo nie wiadomo co) a nie 0. Wbrew pozorom użyteczna funkcja.

Warto tez wspomnieć o funkcji, o której sam dowiedziałem się stosunkowo niedawno

- soundEX(text) – zwraca podobnie brzmiace ciągi tekstów – głównie może służyć do wyszukiwania nazwisk kiedy wiemy, że dzwoni ale nie wiemy w jakiej parafii :)

Do kompletu mamy jeszcze funkcje numeryczne, których oczywiście także jest bez liku. Oto kilka podstawowych:

Funkcje numeryczne

- round (m, [,n]) – zaokrągla m do n-tego miejsca po przecinku. Ważne, że ujemne n zaokrągla do n-tego miejsca PRZED przecinkiem. Jeśli n nie jest podane to n=0

- trunc (m, [,n]) – obcina m do n-tego miejsca po przecinku, ujemne n zamienia na 0 n cyfr przed przecinkiem, jeśli nie podano to wiadomo, że n=0

- power (m, n) – podnoszenie do potęgi n (podnosimy m do n)

- sqrt (m) – pierwiastek kwadratowy z liczby m

- sign (m) – zwraca nam znak liczby, czyli podaje informacje czy liczba jest ujemna czy dodatnia czy 0. W prosty sposób – wynikiem są 1, 0 , -1 w zalezności od znaku liczby m

- abs (m) – zwraca wartość bezwzględną liczby m

- mod (m, n) – zwraca resztę z dzielenia m przez n, jeśli n=0 zwraca m.

Oczywiście jest ich o wiele więcej łącznie ze wszystkimi sin, tan, sinh, cosh itd…

Przedstawiłem Wam podstawowe funkcje jakie są wbudowane w języku SQL – ponieważ jest ich ogrom, nie sposób wypisać je wszystkie. Stosując kombinacje tych funkcji jesteśmy w stanie wyciągnąć bardzo wiele informacji z tabel.

W następnej lekcji rozszerzymy temat o funkcje skalarne oraz ciekawe wyrażenia CASE.

Możesz zostawić komentarz lub wysłać sygnał trackback ze swojego bloga.

Jedna odpowiedź do wpisu “Funkcje wbudowane SQL – cz.1”

  1. R pisze:

    Szacun, za umiejętność prostego wytłumaczenia w 1 zdaniu, co robi dana funkcja.

Zostaw odpowiedź

Subskrybuj kanał RSS Follow me on Twitter!