Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Výběr Filip Čálek. Souhrn Funkce T-SQL Datum a čas Práce s řetězci Konverze mezi typy.

Podobné prezentace


Prezentace na téma: "Výběr Filip Čálek. Souhrn Funkce T-SQL Datum a čas Práce s řetězci Konverze mezi typy."— Transkript prezentace:

1 Výběr Filip Čálek

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

3 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 menší přesností(ms) CURRENT_TIMESTAMP GETDATE GETUTCDATE F s větší přesností(ns) SYSDATETIME SYSDATETIMEOFFSET SYSUTCDATETIME Rozdíly si ukážeme na následujícím příkladu.

4 Funkce – Datum a čas SELECT SYSDATETIME(),SYSDATETIMEOFFSET(),SYSUTCDATETIME(),CURRENT_TIMESTAMP,GETDATE(),GETUTCDATE() ; Výstup: :57: :57: : :57: :57: :57: 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.

5 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ř , nebo 2010/03/09. může i obsahovat proměnnou, případně funkci Getdate().

6 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)

7 Funkce – Datum a čas Příklady: datetime; SET LANGUAGE Czech; SELECT AS 'Den', AS 'Mesic', AS 'Rok'; ……. SELECT AS 'Mesic_N’, AS 'Mesic_P’; DenMesicRok 9březen2010 Mesic_NMesic_P březen3

8 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

9 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.

10 Funkce – Datum a čas int; BEGIN SELECT SET END; … Z příkladu je patrné, že počet dnů je automaticky upraven, aby odpovídal skutečnosti.

11 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.

12 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)

13 Funkce – práce s řetězci int; int; BEGIN END; Převedeme v cyklu „ahoj“ do ASCII a pak za pomoci funkce CHAR zase zpět na znaky. 97a 104h 111o 106jNULL

14 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

15 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.

16 Funkce – práce s řetězci selectSOUNDEX('Ahoj') as 'S1', SOUNDEX('Ahoj') as 'S2', DIFFERENCE('Ahoj','Ahoj') as 'D'; selectSOUNDEX('Ahoj') as 'S1', SOUNDEX('Ahum') as 'S2', DIFFERENCE('Ahoj','Ahum') as 'D'; selectSOUNDEX('Ahoj') as 'S1', SOUNDEX('Server') as 'S2', DIFFERENCE('Ahoj','Server') as 'D'; S1S2D A200A2004 S1S2D A200A5003 S1S2D A200S6160

17 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.

18 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.

19 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.

20 Funkce – práce s řetězci CHAR(15); ahoj'; AS 'Bez upravy', AS 'Po uprave'; SELECT LOWER(SUBSTRING('AHOJ', 1, 4)) AS Lower, UPPER(SUBSTRING('ahoj', 1, 4)) AS Upper; Bez upravyPo uprave ahoj ahoj LowerUpper ahojAHOJ

21 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.

22 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

23 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.

24 Funkce – práce s řetězci SELECT STR(29.994, 5, 2), STR(29.994,5,1); char(20); auto'; SET 4, 0, ' pekne'); as 'Pekne', osklive') as 'Osklive'; PekneOsklive Mam pekne auto Mam osklive auto

25 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.

26 Konverze mezi typy decimal(10,3); = ; SELECT AS int) as 'int', CAST as decimal(10,3)) as 'decimal'; SELECT as 'int', as 'decimal'; V tomto případě je funkce shodná. intdecimal intdecimal

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

28 Konverze mezi typy -StylStandardVýstup 00 / 100Defaultmon dd yyyy hh:miAM (or PM) 1101U.S.mm/dd/yyyy 2102ANSIyy.mm.dd 3103British/Frenchdd/mm/yyyy 4104Germandd.mm.yy 5105Italiandd-mm-yy 6106-dd mon yy 7107-Mon dd, yy 8108-hh:mi:ss 9109Default + msmon dd yyyy hh:mi:ss:mmmAM (or PM) Základní styly pro formát data/času 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“.

29 Konverze mezi typy Pár ukázek použití stylu. Pokud chceme pouze čas: time; SELECT SELECT Případně pouze datum: datetime; SELECT 4:34PM 16:34:32 03/10/ /03/

30 Konverze mezi typy Možné problémy Občas konverze není možná z důvodu nevyhovujícího datového typu. varchar(10); SELECT as int); varchar(10); SELECT 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

31 Závěr Použitá literatura Děkuji za pozornost


Stáhnout ppt "Výběr Filip Čálek. Souhrn Funkce T-SQL Datum a čas Práce s řetězci Konverze mezi typy."

Podobné prezentace


Reklamy Google