Funkce Transact-SQL Výběr Filip Čálek.

Slides:



Advertisements
Podobné prezentace
Prezentační manažer Kapitola 2.0 (První prezentace)
Advertisements

Standardní knihovní funkce pro práci s textovými řetězci
Statistika.
IX. Řešení úloh v testech Scio z obecných studijních předpokladů
Počítače a programování 1 Přednáška 13 Jiří Šebesta.
Tabulkové procesory (MS Excel)
Počasí tabulka v MS Excelu Mgr. Jitka Křičková, Mgr. Jitka Rybenská.
Datové a časové funkce Date () – vrací aktuální systémové datum
Timer časovač potřebuji provádět příkazy opakovaně po uplynutí určitého časového intervalu vlastnost Interval nastavuji v milisekundách (1000  1s) určuje.
Datum a čas Pro práci s datem a časem se používají dvě hlavní funkce.
Třída Array Je součásti balíčku java.util Účelem je usnadnit práci s poli Metody – nejpoužívanější equel(),fill(),sort() a binarySearch() equels() Slouží.
PA081 Programování numerických výpočtů
Programování v Pascalu Přednáška 8
Odhady parametrů základního souboru
PHP Práce se soubory v PHP - 13
Algoritmizace a programování Podprogramy v Delphi - 10
Škola: SŠ Oselce, Oselce 1, Nepomuk, Projekt: Registrační číslo: CZ.1.07/1.5.00/ Název: Modernizace výuky všeobecných.
Databázové systémy SQL Agregace a funkce.
SQL Structured Query Language
PHP – vkládání souborů a html 5
TABULKOVÉ PROCESORY.
Algoritmy I Cvičení č. 4.
Temporální databáze a TSQL
TEMPORÁLNÍ DATABÁZE A TSQL2
Relační databáze Jakub Lokoč.
Radek Špinka Přepínače MSSQL výběr.
Prezentační manažer Kapitola 11.0 (Tisk)
VY_22_INOVACE_J-A-25 Aj pro 4.r./ snímek 1-7 /, 5. r. T I M E - ČAS Základní škola Ostrava, Gebauerova8, příspěvková organizace Autorka: Mgr. Daniela.
Střední průmyslová škola strojnická Olomouc, tř.17. listopadu 49 Výukový materiál zpracovaný v rámci projektu „Učíme moderně“ Registrační číslo projektu:
Integrovaná střední škola, Hlaváčkovo nám. 673, Slaný
Mgr. Jan Lavrinčík, DiS..  pro proměnnou typu Date alokováno 8 bajtů paměti, které obsahují spakovaný vzorek bitů nejen pro datum, ale i pro přesný čas.
8. listopadu 2004Statistika (D360P03Z) 6. předn.1 chování výběrového průměru nechť X 1, X 2,…,X n jsou nezávislé náhodné veličiny s libovolným rozdělením.
A1PRG - Programování – Seminář Ing. Michal Operátory (2. část) 4 Verze
Identifikátor materiálu: EU
Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního rozpočtu ČR. Provozováno Výzkumným ústavem pedagogickým v Praze.
Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Pavel Najman. Obchodní akademie a Střední odborná škola logistická, Opava, příspěvková.
Databázové systémy 2 Zkouška – 8:00. Příklad I - Funkce Vytvořte funkci ZK_HR_ODDELENI (p_oddeleni_id NUMBER). Funkce vrátí řetězec, obsahující.
Střední průmyslová škola strojnická Olomouc, tř.17. listopadu 49 Výukový materiál zpracovaný v rámci projektu „Učíme moderně“ Registrační číslo projektu:
Excel úpravy grafu, karta Návrh
Cvičení.
Fakulta elektrotechniky a informatiky
Databázové systémy 2 Zkouška – 08:00. Příklad I – Funkce – 4 body Vytvořte funkci F_ZK1(p_id_zamestnance NUMBER) RETURN VARCHAR2. Daná funkce.
PictureBox u vkládání obrázků u vlastnost Picture pomocí příkazu LoadPicture u přiřazení obrázku mezi dvěma prvky PictureBox Auto.Picture = AutoCerv.Picture.
POČÍTAČOVÁ GRAFIKA ÚPRAVA FOTOGRAFIÍ – ZÁKLADNÍ ÚPRAVY ING. BOHUSLAVA VITEKEROVÁ IKT MS Office
Tento výukový materiál vznikl v rámci Operačního programu Vzdělávání pro konkurenceschopnost Číslo projektu: CZ.1.07/1.5.00/ Číslo materiálu: VY_32_INOVACE_PSK-4-09.
Digitální výukový materiál zpracovaný v rámci projektu „EU peníze školám“ Projekt:CZ.1.07/1.5.00/ „SŠHL Frýdlant.moderní školy“ Škola:Střední škola.
Lineární regresní model Statistická inference Tomáš Cahlík 4. týden.
OSNOVA: a) Příkazy pro cykly II. b) Příkazy pro řízení přenosu c) Příkazy – příklad d) Řetězce v C e) Funkce “stdio.h“ pro řetězce f) Funkce “string.h“
Databázové systémy 2 Zkouška – 8:00. Příklad I – Procedura – 5 bodů Vytvořte proceduru P_ZK2(p_table_name VARCHAR2, p_min_nuls NUMBER, p_drop.
Dynamic SQL P. Částek. Dynamic SQL Embedded SQL je překládaný preprocesorem => za běhu nelze nechat uživatele rozhodovat o vzhledu samotných SQL příkazů.
Proměnné pro datum Funkce pro práci s ním
TEMPORÁLNÍ DATABÁZE A TSQL2
Příklady v jazyku C – část 1. Výstupy pomocí printf. printf(" Tisk textu \n v apostrofech \n ") ; p=10; printf("%d\n", p) ; /* tisk konstanty */ printf("Tisk.
Databázové systémy 2 Zkouška – 8:00. Příklad I - Funkce Vytvořte funkci ZK_DIFF_MIN_MAX (P_ZAM_ID NUMBER) RETURN VARCHAR2. Funkce může vracet.
Fce VB - matematické Abs( výraz ) Fix( výraz ) Int( výraz) Sgn(výraz )
Diář 1 Kalendář. Diář Základem diáře je kalendárium, ve kterém můžeme prohlížet jednotlivé měsíce Základem diáře je kalendárium, ve kterém můžeme prohlížet.
Charakteristiky úrovně Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T. G. Masaryka, Kostelec nad Orlicí.
Programování KONSTANTY, ČTENÍ PO JEDNOM ZNAKU GETCHAR() FORMÁTOVANÝ VÝSTUP POMOCÍ PRINTF, VÝVOJOVÉ DIAGRAMY, CYKLY.
Definiční obor a obor hodnot
Vzorové řešení zápočtového testu
Databázové systémy přednáška 2 – Datové typy
Kurz algoritmizace a programování v jazyce C
Databázové systémy a SQL
Elektronická učebnice - I
Převody minuty, stupně. Převody minuty, stupně.
Spojitá a kategoriální data Základní popisné statistiky
Databázové systémy a SQL
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
Marie Rottrová
Definiční obory. Množiny řešení. Intervaly.
Transkript prezentace:

Funkce Transact-SQL Výběr Filip Čálek

Souhrn Funkce T-SQL Datum a čas Práce s řetězci Konverze mezi typy

Funkce – Datum a čas Funkce pro získání data a času Tyto funkce můžeme rozdělit na funkce s větší přesností a funkce s menší přesností. F s větší přesností(ns) SYSDATETIME SYSDATETIMEOFFSET SYSUTCDATETIME F s menší přesností(ms) CURRENT_TIMESTAMP GETDATE GETUTCDATE Rozdíly si ukážeme na následujícím příkladu.

Funkce – Datum a čas SELECT SYSDATETIME() ,SYSDATETIMEOFFSET() ,SYSUTCDATETIME() ,CURRENT_TIMESTAMP ,GETDATE() ,GETUTCDATE() ; Výstup: 2010-03-09 16:57:41.9156594 2010-03-09 16:57:41.9156594 +01:00 2010-03-09 15:57:41.9156594 2010-03-09 16:57:41.913 2010-03-09 15:57:41.913 Z ukázky je patrné, že v prvních třech případech se jedná o funkce s větší přesností. Je nutné dále rozlišit funkce, které vrací čas platný na vašem počítači a nebo GMT.

Funkce – Datum a čas Parametry funkcí První parametr těchto funkcí bývá tzv. datepart: Year, month, day, hour, minute atd. Definujeme jaká hodnota se bude vracet. Další parametry se odvíjí dle funkce. Jeden z dalších parametrů načítá datum a čas ve formátu datetime. Např. 2010-03-09, nebo 2010/03/09. může i obsahovat proměnnou, případně funkci Getdate().

Funkce – Datum a čas DATENAME/DATEPART/DATEDIFF DATENAME vrací nvarchar hodnotu z konkrétního data/času. Např. název měsíce. DATENAME(datepart,datetime) DATEPART funguje shodně akorát vrací číselnou hodnotu. DATEDIFF vrací číselnou hodnotu a sice rozdíl mezi tzv. startdate a enddate ve tvaru datetime. DATEDIFF(datepart,startdate,enddate)

Funkce – Datum a čas Příklady: DECLARE @datum datetime; SET @datum=GETDATE(); SET LANGUAGE Czech; SELECT DATENAME(DAY, @datum) AS 'Den', DATENAME(MONTH, @datum) AS 'Mesic', DATENAME(YEAR,@datum) AS 'Rok'; ……. SELECT DATENAME(MONTH, @datum) AS 'Mesic_N’, DATEPART(MONTH, @datum) AS 'Mesic_P’; Den Mesic Rok 9 březen 2010 Mesic_N Mesic_P březen 3

Funkce – Datum a čas Příklady: SELECT DATEDIFF(YEAR,'2005', '2010’) as ‚Rozdil'; SELECT DATEDIFF(millisecond, GETDATE(), SYSDATETIME()) as 'Pocet ms'; Rozdil 5 Pocet ms 3

Funkce – Datum a čas DATEADD/SET LANGUAGE DATEADD upraví datum/čas o určitý námi zvolený interval. Např. posune měsíc o jedna,čili z ledna se stane únor. DATEADD(datepart,cislo,datetime) Druhý parametr „cislo“ určuje velikost intervalu. SET LANGUAGE upraví nejen názvy měsíce, ale i datetime format.

Funkce – Datum a čas DECLARE @cislo int; SET @cislo=0; WHILE @cislo<12 BEGIN SELECT CONVERT(varchar,DATEADD(MONTH,@cislo,'2010-1-31'),104) SET @cislo=@cislo+1; END; 31.01.2010 28.02.2010 31.03.2010 30.04.2010 … Z příkladu je patrné, že počet dnů je automaticky upraven, aby odpovídal skutečnosti.

Funkce – práce s řetězci ASCII/CHAR/CHARINDEX/DATALENGTH ASCII převádí char na číselnou ASCII hodnotu. CHAR naopak převádí z ASCII kódu na znak. CHARINDEX vyhledává char nebo podřetězec v řetězci a sice, že nalezne jeho první znak. DATALENGTH vrací hodnotu odpovídající délce řetězce.

Funkce – práce s řetězci NCHAR/UNICODE/SUBSTRING V případě převádění do unicode a zpět použijeme funkce UNICODE/NCHAR SUBSTRING vrací část řetězce. Většinou se používá jako pomocná funkce k jiným funkcím, jako např. ASCII,UNICODE… SUBSTRING(retezec, index, rozsah)

Funkce – práce s řetězci DECLARE @cislo int; DECLARE @znak int; SET @cislo=0; WHILE @cislo<=DATALENGTH('ahoj') BEGIN SET @cislo=@cislo+1; SET @znak=ASCII(SUBSTRING('ahoj', @cislo,1)); SELECT @znak, CHAR(@znak) END; Převedeme v cyklu „ahoj“ do ASCII a pak za pomoci funkce CHAR zase zpět na znaky. 97 a 104 h 111 o 106 j NULL NULL

Funkce – práce s řetězci SELECT SUBSTRING('AHOJ',2,2), SUBSTRING('AHOJ',3,2), SUBSTRING('AHOJ',1,3), SUBSTRING('AHOJ',1,4); Ukázka jak se chová SUBSTRING při změně parametrů. HO OJ AHO AHOJ

Funkce – práce s řetězci DIFFERENCE/SOUNDEX DIFFERENCE porovnává dva řetězce a vrací číselnou hodnotu od 0 do 4. 0 – největší možný rozdíl. 4 – nejmenší nebo žádný rozdíl. Neporovnává přímo řetězce, ale kódy vytvořené pomocí funkce SOUNDEX – kód se skládá ze čtyř znaků. První obsahuje první char řetězce a dále tři číselné znaky. Např. SOUNDEX(‘Ahoj’) vrací kód A200.

Funkce – práce s řetězci select SOUNDEX('Ahoj') as 'S1', SOUNDEX('Ahoj') as 'S2', DIFFERENCE('Ahoj','Ahoj') as 'D'; SOUNDEX('Ahum') as 'S2', DIFFERENCE('Ahoj','Ahum') as 'D'; SOUNDEX('Server') as 'S2', DIFFERENCE('Ahoj','Server') as 'D'; S1 S2 D A200 A200 4 A200 A500 3 A200 S616 0

Funkce – práce s řetězci SOUNDEX – stručné vysvětlení tzv. fonetického algoritmu. Tři číselné znaky ohodnocují souhlásky daného slova následujícím způsobem: b, f, p, v = 1 c, g, j, k, q, s, x, z = 2 d, t = 3 l = 4 m, n = 5 r = 6 Soundex z AHOJ vrací A200, protože: A - je první znak. H - není nijak ohodnoceno O – není souhláska J – ohodnoceno jako 2 Jelikož slovo dál nepokračuje, je kód doplněn nulami.

Funkce – práce s řetězci SOUNDEX – příklady SELECT SOUNDEX('robert') SELECT SOUNDEX('rupert') Vzhledem k tomu, že B a P má stejné ohodnocení, vychází nám v tomto případě stejný kód. R163 V případě dvou nebo více stejně ohodnocených souhlásek po sobě je ohodnocena pouze první z nich. Řetězec GGGG by vrátil G200. Doplněním jiného znaku např.: GGPGG nám vyjde G212. Pokud soundex již ohodnotil tři souhlásky, tak případné další ignoruje.

Funkce – práce s řetězci LOWER/UPPER/LTRIM/RTRIM LOWER velké znaky převede na malé. UPPER naopak převede malé na velké. LTRIM odstraní mezery na začátku řetězce RTRIM odstraní mezery na konci řetězce.

Funkce – práce s řetězci DECLARE @Z CHAR(15); SET @Z=' ahoj'; SELECT @Z AS 'Bez upravy', LTRIM(@Z) AS 'Po uprave'; SELECT LOWER(SUBSTRING('AHOJ', 1, 4)) AS Lower, UPPER(SUBSTRING('ahoj', 1, 4)) AS Upper; Bez upravy Po uprave ahoj ahoj Lower Upper ahoj AHOJ

Funkce – práce s řetězci REPLACE/REPLICATE/REVERSE REPLACE může změnit námi zvoleny podřetězec za jiný. Můžeme tak ve větě změnit např. jedno slovo. REPLICATE zopakuje řetězec podle zvoleného čísla. REVERSE otočí pořadí znaků v řetězci.

Funkce – práce s řetězci SELECT REPLACE('Uceni je nuda!','nuda','zabava'); SELECT REPLICATE('Ahoj ',5); SELECT REVERSE('Ahoj'), REVERSE('kobylamamalybok') , REVERSE('12345'); Uceni je zabava! Ahoj Ahoj Ahoj Ahoj Ahoj johA kobylamamalybok 54321

Funkce – práce s řetězci STR/STUFF STR zaokrouhlí na jedno či více desetinných míst, případně na celá čísla. STUFF vloží jeden řetězec do druhého na určité místo. Také je možnost vymazat určitý počet znaků a na jejich místo vloží vkládaný řetězec.

Funkce – práce s řetězci SELECT STR(29.994, 5, 2), STR(29.994,5,1); DECLARE @auto char(20); SET @auto='Mam auto'; SET @auto=STUFF(@auto, 4, 0, ' pekne'); SELECT @auto as 'Pekne', STUFF(@auto,4,6,' osklive') as 'Osklive'; 29.99 30.0 Pekne Osklive Mam pekne auto Mam osklive auto

Konverze mezi typy CAST a CONVERT Základní funkce pro převody mezi datovými typy. Tyto funkce jsou funkčností téměř shodné. Liší se způsob zápisu a funkce CONVERT na rozdíl od funkce CAST umožňuje definování stylu. Styl se definuje zejména u funkcí data a času. Konkrétně ovlivňuje formát data/času.

Konverze mezi typy V tomto případě je funkce shodná. DECLARE @cislo decimal(10,3); SET @cislo = 193.57; SELECT CAST(@cislo AS int) as 'int', CAST (@cislo as decimal(10,3)) as 'decimal'; SELECT CONVERT(int, @cislo) as 'int', CONVERT(decimal(10,3),@cislo) as 'decimal'; V tomto případě je funkce shodná. int decimal 193 193.570

Konverze mezi typy Podívejme se na rozdíl mezi CAST a CONVERT v případě konverze datetime. DECLARE @datum datetime; SET @datum=GETDATE(); SELECT CAST( @datum as varchar); SELECT CONVERT(varchar,@datum,109); Výstup bude již jiný kvůli stylu. Mar 3 2010 2:40PM Mar 3 2010 2:40:14:897PM Jak již bylo řečeno, styl se definuje pouze funkcí CONVERT.

Konverze mezi typy Základní styly pro formát data/času - Styl Standard Výstup 0 / 100 Default mon dd yyyy hh:miAM (or PM) 1 101 U.S. mm/dd/yyyy 2 102 ANSI yy.mm.dd 3 103 British/French dd/mm/yyyy 4 104 German dd.mm.yy 5 105 Italian dd-mm-yy 6 106 dd mon yy 7 107 Mon dd, yy 8 108 hh:mi:ss 9 109 Default + ms mon dd yyyy hh:mi:ss:mmmAM (or PM) Toto je výčet základních typů stylu. Je jich mnohem více, ale většina je již více či méně odvozena z těchto prvních. Pokud styl nevyplníme, automaticky se dosadí základní „100“.

Konverze mezi typy Pár ukázek použití stylu. Pokud chceme pouze čas: DECLARE @datum time; SET @datum=GETDATE(); SELECT CONVERT(varchar,@datum,100); SELECT CONVERT(varchar,@datum,108); Případně pouze datum: DECLARE @datum datetime; SELECT CONVERT(varchar,@datum,101), CONVERT(varchar,@datum,102), CONVERT(varchar,@datum,103), CONVERT(varchar,@datum,104); 4:34PM 16:34:32 03/10/2010 2010.03.10 10/03/2010 10.03.2010

Konverze mezi typy Možné problémy Občas konverze není možná z důvodu nevyhovujícího datového typu. DECLARE @hm varchar(10); SET @hm='125.25' SELECT CAST(@hm as int); SELECT CAST(CAST(@hm as decimal(10,5)) as int); V tomto případě konverze nelze provést. Proto je nutné převést varchar nejprve na decimal a teprve pak na int. Výsledek: 125

Závěr Použitá literatura http://msdn.microsoft.com Děkuji za pozornost