Funkcje. Rozdział 3a Funkcje wierszowe. Funkcje znakowe (1) Funkcje wierszowe

Podobne dokumenty
Język SQL. Rozdział 3. Funkcje wierszowe

Funkcje. Rozdział 3. Funkcje. Funkcje znakowe (1) Funkcje wierszowe

Język SQL. Rozdział 3. Zaawansowana selekcja danych

PL/SQL. Funkcje wbudowane

osiągnął długość podaną jako drugi parametr. Jeśli wynik jest dłuższy niż zadeklarowana długość, zostaje ucięty z prawej strony.

Przydatne sztuczki - sql. Na przykładzie postgres a.

Bazy danych. Andrzej Łachwa, UJ, /14

Ćwiczenie 2 funkcje wierszowe

Wykład 8 Implementacja języka SQL w systemach baz danych Oracle specyficzne konstrukcje i funkcje Oracle SQL, funkcje numeryczne, znakowe, daty i

Język SQL. Rozdział 9. Język definiowania danych DDL, cześć 1. Tworzenie relacji, typy danych, wartości domyślne atrybutów, słownik bazy danych.

SQL do zaawansowanych analiz danych część 1.

Bazy danych 7/15. Andrzej Łachwa, UJ,

PL/SQL. Część 1 Oracle SQL. Piotr Medoń

Administracja i programowanie pod Microsoft SQL Server 2000

2. Język SQL SQL jest językiem deklaratywnym (Charakterystyczną cechą języków

Język SQL. Rozdział 2. Proste zapytania

Klasyczna Analiza Danych

Ściągawka z funkcji i właściwości systemowych VBA. Opis działania i parametrów. Nazwa funkcji. Składnia zwracanej wartości

Funkcja INITCAP. SQL> select initcap(dname), initcap(loc) from dept; Funkcja SUBSTR

BAZY DANYCH JĘZYK ZAPYTAŃ BAZ DANYCH SQL. Microsoft Access. Adrian Horzyk. Akademia Górniczo-Hutnicza

Bazy danych. Plan wykładu. Dekompozycja relacji. Anomalie. Wykład 5: Projektowanie relacyjnych schematów baz danych. SQL - funkcje grupujce

Ref. 7 - Język SQL - polecenia DDL i DML

Zagadnienia podstawowe

PL/SQL. Część 1 Bloki PL/SQL. Piotr Medoń

Język SQL. Rozdział 4. Funkcje grupowe Funkcje grupowe, podział relacji na grupy, klauzule GROUP BY i HAVING.

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Wprowadzania liczb. Aby uniknąć wprowadzania ułamka jako daty, należy poprzedzać ułamki cyfrą 0 (zero); np.: wpisać 0 1/2

Typy Oracle atrybutów relacji Typ NUMBER (1)

Typy Oracle atrybutów relacji Typ NUMBER (1)

a) Polecenie: Wyświetl wszystkie rekordy z tabeli Pracownicy (wszystkie atrybuty)

Przegląd podstawowych funkcji Excel.

Język PL/SQL. Rozdział 6. Procedury wyzwalane

Kiedy i czy konieczne?

SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel

Bazy danych 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy

Oracle PL/SQL. Paweł Rajba.

Język SQL. Rozdział 5. Połączenia i operatory zbiorowe

Współczesne systemy baz danych

Bazy danych 2. Anna Fiedorowicz Wydział Matematyki, Informatyki i Ekonometrii

Autor: dr inż. Katarzyna Rudnik

LibreOffice Calc VBA

Pracownia Komputerowa wykład VI

S Instrukcje rozszerzone oraz umożliwiające operacje na znakach i łańcuchach. Automatyka i mechatronika

kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli

Procedury wyzwalane. Rozdział 13. Procedury wyzwalane. Cele stosowania procedur wyzwalanych. Definiowanie procedury wyzwalanej DML

1 Wprowadzenie do funkcji

Widok Connections po utworzeniu połączenia. Obszar roboczy

Zapis liczb binarnych ze znakiem

Język SQL. Rozdział 8. Język manipulowania danymi DML

Współczesne systemy baz danych

Systemy zapisu liczb.

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

OBLICZENIA NA DANYCH

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Temporalne bazy danych

Przestrzenne bazy danych Podstawy języka SQL

Wprowadzenie do informatyki - ć wiczenia

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

ARCHITEKRURA KOMPUTERÓW Kodowanie liczb ze znakiem

Bloki anonimowe w PL/SQL

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Laboratorium Baz Danych. Zapytania SQL (część 3)

1 Wprowadzenie do języka SQL 1. 2 Podstawowe elementy języka 3. 3 DML - zapytania, część I 6. 4 Źródła 12

TECHNOLOGIE BAZ DANYCH

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 2 WSTĘP DO INFORMATYKI

Kod U2 Opracował: Andrzej Nowak

Pracownia Komputerowa wyk ad VI

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

Spis treści. 1 Kraj/region i język Ustawienia regionalne Liczby Waluta Czas i data Inne...

1 Podstawy c++ w pigułce.

Plan wykładu PL/SQL. PL/SQL - historia TWORZENIE APLIKACJI BAZODANOWYCH

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

Wprowadzenie do baz danych

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Autor: Joanna Karwowska

Przedmiot: Urządzenia techniki komputerowej Nauczyciel: Mirosław Ruciński

2 Przygotował: mgr inż. Maciej Lasota

XQuery. sobota, 17 grudnia 11

Autor: Joanna Karwowska

Język PL/SQL. Rozdział 2. Kursory

Kursor jawny. Rozdział 10a Kursory. Deklarowanie kursora (1) Deklarowanie kursora (2)

Właściwości i metody obiektu Comment Właściwości

Wielkości liczbowe. Wykład z Podstaw Informatyki dla I roku BO. Piotr Mika

1259 (10) = 1 * * * * 100 = 1 * * * *1

Szkolenie Oracle SQL podstawy. Terminy lutego 2010 First Minute! 1100zł!

Kursor. Rozdział 10a Kursory. Otwieranie kursora. Deklarowanie kursora

Metoda znak-moduł (ZM)

Operacja PIVOT w języku SQL w środowisku Oracle

Oracle11g: Wprowadzenie do SQL

Wielkości liczbowe. Wykład z Podstaw Informatyki. Piotr Mika

Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych.

mbank CompanyNet, BRESOK

Podstawy SQL. 1. Wyświetl całość informacji z relacji ZESPOLY. 2. Wyświetl całość informacji z relacji PRACOWNICY

Zakład Hydrologii i Geoinformacji, Instytut Geografii UJK

Zajęcia 2 podstawy języka SQL

niż zadeklarowana długość, zostaje ucięty z prawej strony. osiągnął długość podaną jako drugi parametr. Jeśli wynik jest dłuższy

Zaawansowany SQL. Robert A. Kłopotek Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW

Transkrypt:

Funkcje Rozdział 3a Funkcje wierszowe Funkcje wierszowe (funkcje znakowe, funkcje liczbowe, funkcje operujące na datach, funkcje konwersji, funkcje polimorficzne) Przekształcają dane, pobrane przez polecenie SQL, lub wyliczają nowe dane. Podział ze względu na zakres działania: funkcje wierszowe operują na wartościach atrybutów jednego rekordu, funkcja zwraca tyle wyników ile rekordów przetwarza polecenie SQL, funkcje grupowe (agregujące) operują na wartościach wielu rekordów (grupy rekordów), funkcja zwraca jeden wynik dla każdej grupy rekordów, przetwarzanej przez polecenie SQL Podział ze względu na pochodzenie: funkcje predefiniowane, funkcje użytkownika. 1 2 Użycie: Funkcje wierszowe SELECT atrybut_1, funkcja_a(wyrażenie_1, wyrażenie_2) AS wynik FROM nazwa_relacji WHERE funkcja_b(wyrażenie_3) operator wyrażenie_4... ORDER BY funkcja_c; Podział: funkcje znakowe funkcje liczbowe funkcje operujące na datach i interwałach czasowych funkcje konwersji pozostałe funkcje Funkcje znakowe (1) LOWER(wartość) zamienia WIELKIE litery na małe UPPER(wartość) zamienia małe litery na WIELKIE INITCAP(wartość) zamienia pierwsze litery w słowie na duże LPAD(wartość, n [, ciąg ]), RPAD(wartość, n [, ciąg ]) Uzupełnia kolumny z lewej (prawej) strony podanym ciągiem aż do długości n znaków. Jeśli ciąg nie został podany to wypełnia spacjami SELECT LOWER(nazwa), INITCAP(' mieści się na '), UPPER(adres) SELECT LPAD(nazwa,25,'*'), LPAD(nazwa,25), RPAD(nazwa,25,'.') 3 4

Funkcje znakowe (2) SUBSTR(wartość,n [,m]) z podanego łańcucha znaków wycina m znaków począwszy od pozycji n-tej INSTR(wartość, ciąg [,m,n]) wskazuje miejsce pierwszego (n-tego) wystąpienia ciągu w łańcuchu znaków począwszy od pozycji m-tej, 0 w przypadku braku dopasowania LTRIM(wartość [, zbiór_znaków ]), RTRIM(wartość [, zbiór_znaków ]) usuwa z lewej (prawej) strony ciągu znaki z podanego zbioru (spacje) LENGTH(wartość) zwraca długość łańcucha znaków SELECT SUBSTR(nazwisko,3,4), INSTR(etat,'PROF'), LENGTH(etat) Funkcje znakowe (3) TRANSLATE(źródło,z,na) Każde wystąpienie w źródle znaku z ciągu z zostanie zastąpione odpowiadającym mu znakiem z ciągu na REPLACE(źródło,wzór,nowy) Każde wystąpienie w źródle ciągu wzorzec zostanie zastąpione przez ciąg nowy SELECT etat, REPLACE(etat,'AS','XY'), TRANSLATE(etat,'AS','XY'), REPLACE(etat,'ASY','XZ'), TRANSLATE(etat,'ASY','XZ') SELECT nazwa, LTRIM(nazwa,'ABCD') 5 6 Funkcje liczbowe (1) Funkcje liczbowe (2) ROUND(wartość,n) zaokrągla wartość do n-tego dziesiętnego miejsca po przecinku TRUNC(wartość,n) obcina wartość do n-tego dziesiętnego miejsca po przecinku CEIL(wartość), FLOOR(wartość) najmniejsza (największa) liczba całkowita większa lub równa (mniejsza lub równa) podanej wartości SELECT ROUND(123.456,1), ROUND(123.456), ROUND(123.456,-1), TRUNC(123.456,1), TRUNC(123.456), TRUNC(123.456,-1) SELECT FLOOR(1.5), CEIL(1.5) POWER(wartość,n) podnosi wartość do podanej potęgi SQRT(wartość) oblicza pierwiastek kwadratowy z podanej wartości ABS(wartość) oblicza wartość bezwzględną wyrażenia MOD(wartość1, wartość2) zwraca resztę z dzielenia SIGN(wartość) zwraca 1 jeśli wartość jest ujemna, 0 dla 0 i 1 jeśli wartość jest dodatnia SELECT POWER(2,16), SQRT(64), ABS(-100), MOD(123456789,10) 7 8

Funkcje operujące na datach (1) Funkcje operujące na datach (2) Oracle przechowuje daty w polach typu DATE zawierających stulecie, rok, miesiąc, dzień, godzinę, minutę i sekundę. Zakres dat to 1 stycznia 4712 p.n.e do 31 grudnia 9999. Funkcje CURRENT_DATE i CURRENT_TIMESTAMP zwracają bieżącą datę i znacznik czasowy. Funkcja Oracle SYSDATE zwraca bieżącą datę systemową. Słowo kluczowe DATE służy do reprezentacji literałów typu DATE w domyślnym formacie rrrr-mm-dd. Wewnętrznie daty są przechowywane w postaci liczb, możliwe jest stosowanie operatorów dodawania i odejmowania. SELECT CURRENT_DATE, CURRENT_TIMESTAMP SELECT zatrudniony, SYSDATE, SYSDATE-zatrudniony WHERE zatrudniony > DATE '1990-01-01'; EXTRACT (YEAR/MONTH/DAY/HOUR/MINUTE/SECOND/ TIMEZONE_HOUR/TIMEZONE_MINUTE/TIMEZONE_REGION/ TIMEZONE_ABBR FROM data/czas/interwał) Zwraca jeden ze składników daty, znacznika czasowego lub interwału czasowego (np. dzień, rok, godzinę,...) UWAGA! Z wartości typu DATE możesz wydobyć jedynie elementy YEAR, MONTH i DAY. SELECT EXTRACT (YEAR FROM DATE '2003-10-01') SELECT EXTRACT (HOUR FROM CURRENT_TIMESTAMP) ':' EXTRACT (MINUTE FROM CURRENT_TIMESTAMP) AS now SELECT EXTRACT (YEAR FROM zatrudniony) AS rok_zatrudnienia 9 10 Funkcje operujące na datach (3) Operacje na interwałach czasowych (1) MONTHS_BETWEEN(data1,data2) Zwraca liczbę miesięcy jakie upłynęły między datami ADD_MONTHS(data,n) Zwraca datę plus n miesięcy kalendarzowych NEXT_DAY(data,dzień) Zwraca następną datę po podanej przypadającą na podany dzień LAST_DAY(data) Zwraca datę ostatniego dnia w miesiącu podanej daty SELECT MONTHS_BETWEEN(SYSDATE, zatrudniony) SELECT NEXT_DAY(SYSDATE,'WTOREK') SELECT LAST_DAY(DATE '1992-02-01') 11 Interwał czasowy reprezentuje różnicę w czasie między datami i znacznikami czasowymi. Typy interwałów: YEAR TO MONTH (precyzja domyślna: YEAR(2)) DAY TO SECOND (precyzja domyślna: DAY(2), SECOND(6)) Słowo kluczowe INTERVAL służy do reprezentacji literałów typu interwał czasowy. Przykłady literałów interwałowych: INTERVAL 4 5:12 DAY TO MINUTE - 4 dni, 5 godz. i 12 minut. INTERVAL 400 5 DAY(3) TO HOUR - 400 dni 5 godz. INTERVAL 10 HOUR - 10 godz. INTERVAL 10:22 MINUTE TO SECOND - 10 minut 22 sekundy. INTERVAL 10 MINUTE - 10 minut. INTERVAL 1-6 YEAR TO MONTH półtora roku INTERVAL 120 HOUR(3) - 120 godz. INTERVAL 30.12345 SECOND(2,5) 30,12345 sek. 12

Operacje na interwałach czasowych (2) Operacje na interwałach czasowych (3) SQL> SELECT INTERVAL'20' DAY - INTERVAL'240' HOUR INTERVAL'20'DAY-INTERVAL'240'HOUR -------------------------------------------------------------- +000000010 00:00:00.000000000 SQL> SELECT EXTRACT (DAY FROM (INTERVAL'20' DAY - INTERVAL'240' HOUR)) EXTRACT(DAYFROM(INTERVAL'20'DAY-INTERVAL'240'HOUR)) --------------------------------------------------- 10 (sysdate - zatrudniony ) DAY(5) TO SECOND "Pracuje dni", (sysdate - zatrudniony ) YEAR TO MONTH "Pracuje lat" NAZWISKO Pracuje dni Pracuje lat --------------------- ---------------------------------- ---------------- WEGLARZ +16122 19:20:23.000000 +44-02 BLAZEWICZ +14175 19:20:23.000000 +38-10 SLOWINSKI +12591 19:20:23.000000 +34-06 BRZEZINSKI +15940 19:20:23.000000 +43-08 EXTRACT (DAY FROM (sysdate - zatrudniony ) DAY TO SECOND) "Pracuje dni", EXTRACT (YEAR FROM (sysdate - zatrudniony ) YEAR TO MONTH) "Pracuje lat" 13 14 Funkcje konwersji CAST (wartość AS typ) ogólna standardowa funkcja konwersji TO_CHAR(liczba data [, format ]) TO_NUMBER( tekst ) TO_DATE( tekst, format ) CAST (placa_pod AS VARCHAR2(20)) SCC Stulecie YYYY BC AD MM MON MONTH D DD DDD DAY AM PM HH HH24 MI SS Rok Wskaźnik ery Miesiąc Skrót nazwy m-ca Nazwa miesiąca Dzień Nazwa dnia Wskaźnik pory dnia Godziny Godziny (24h) Minuty Sekundy zatrudniony WHERE zatrudniony < TO_DATE('00_01_10','YY_DD_MM'); SELECT TO_CHAR(SYSDATE, 'SCC, YYYY.MM.DD, DAY, HH24:MI:SS') SELECT TO_NUMBER('-12,67') 15 Funkcje polimorficzne NVL(wyrażenie1,wyrażenie2) Jeśli wyrażenie1 ma wartość różną od NULL to funkcja zwraca wyrażenie1, w przeciwnym przypadku zwraca wyrażenie2 NVL2(wyrażenie1,wyrażenie2, wyrażenie3) Jeżeli wyrażenie1 ma wartość różną od NULL to funkcja zwraca wyrażenie2, w przeciwnym przypadku zwraca wyrażenie3 GREATEST(w1,...) LEAST(w1,...) Zwraca największą (najmniejszą) wartość z listy NVL(placa_dod,0) AS NVL, NVL2(placa_dod,10,0) AS NVL2 GREATEST(placa_pod/30, NVL(placa_dod,0)) 16

Wyrażenie CASE CASE wyrażenie WHEN wartość 1a THEN wartość 1b WHEN wartość 2a THEN wartość 2b [ ELSE wartość 3 ] END etat, ( CASE etat WHEN 'DYREKTOR' THEN ' *** ' WHEN 'PROFESOR' THEN ' *** ' ELSE TO_CHAR(placa_pod) END) AS placa_pod CASE WHEN warunek 1 THEN wartość 1 WHEN warunek 2 THEN wartość 2 [ ELSE wartość 3 ] END Funkcja DECODE DECODE(wyrażenie,S1,W1,[S2,W2,...] domyślne) Jeśli wyrażenie równa się S1 to funkcja zwraca W1, jeśli wyrażenie równa się S2 to funkcja zwraca W2,..., w przeciwnym wypadku funkcja zwraca wartość domyślną. Niestandardowa funkcja w Oracle Częściowo pokrywa funkcjonalność CASE DECODE(etat, 'PROFESOR', ' *** ', 'DYREKTOR', ' *** ', TO_CHAR(placa_pod) ) AS placa_pod etat, ( CASE WHEN etat IN ('DYREKTOR','PROFESOR') THEN ' *** ' ELSE TO_CHAR(placa_pod) END) AS placa_pod 17 18