T-SQL

Comparing strings with trailing spaces

There is all the time confusion in the developer’s daily job how exactly is SQL Server handling padding spaces before and after strings in comparison and data persistence. Time to make it more clear now. The few most important things to remember are: SQL Server follows the ANSI/ISO SQL-92 specification…

Read more
SQL Server

IDENTITY, transakce a návrh datového modelu

Při návrhu datového modelu musíme myslet i na správnou velikost datového typu pro primární klíč. Standardem je datový typ INT, ale pokud máme dimenzi s několika prvky, rádi zvolíme TINYINT, je-li dimenze cizím klíčem ve faktové tabulce o velkém množství řádků. Úspora úložiště a vliv na výkon je poté jednoznačně…
SQL Server

Generátor unikátních ID

V době, kdy ještě neexistovaly v SQL serveru sekvence, jsme při vytvoření generátoru unikátních IDček napříč celou databází byli odkázání na lidovou tvořivost. Dnes si ukážeme snad nejjednodušší možné řešení s využitím SCOPE_IDENTITY () a jedné tabulky, která drží naše již použitá IDčka.
T-SQL

Vzorová syntaxe CURSORu

Dvě základní šablony kurzoru. Liší se především syntakticky, kdy druhá varianta nevyžaduje opakované kopírování seznamu parametrů v příkazu FETCH, což je výhodné zejména tehdy, načítá-li kurzor velké množství sloupců z deklarativního dotazu.

Read more
SQL Server

Nalezení textového řetězce v databázi

V případě, že máme neznámou nebo rozsáhlou databázi a snažíme se dohledat výskyt určitých dat, aniž bychom tušili, v které tabulce je máme hledat, stojíme před otázkou, jak prohledat všechny tabulky, zda se v nich určitý řetězec vyskytuje. Stejný problém budeme řešit i v případě, že máme databázi, která nepoužívá…
SQL Server

Odstranění duplicitních řádků

Existuje řada způsobů, jak z tabulky odstranit duplicitní řádky. Jedním z nich je využití analytické funkce spolu s CTE (Common Table Expression). Pomocí analytické funkce ROW_NUMBER() získáme pro každý řádek číslo, které bude unikátní vždy v rámci dané partition, kterou v příkladu níže vytvoříme tak, že pomocí klauzule PARITION BY…
SQL Server

Jednoduchý batch generátor a jeho praktické využití

V praxi se často můžeme setkat s nutností provádět některé operace po částech či ve více transakcích, protože pokud bychom je vykonali jako jedinou operaci, bude vše trvat neúměrně dlouho, případně si provedení operace může vyžádat systémové prostředky, které nemáme. Nejčastěji se s tímto scénářem setkáme v případě mazání řádků…

Read more
T-SQL

Výpis adresářů z T-SQL

Pokud potřebujeme vypsat v T-SQL seznam adresářů, případně souborů na disku, máme tyto základní možnosti: extended proceduru xp_dirtree, DOS příkazy pomocí xp_cmdshell, CLR nebo OLE (OAAutomation objekty). Dnes se povídáme na možnosti, které nám poskytuje xp_dirtree a xp_cmdshell.
T-SQL

Spouštění skriptů ze souboru

Spouštět sql skripty uložené například v adresáři na disku je poměrně častý úkol a my si ukážeme dva jednoduché způsoby jak na to: pomocí OPENROWSET() funkce a pomocí SQLCMD Mode nastavení Sql Server Management Studia.
SQL Server

Generování dat do HTML pomocí T-SQL

V praxi se čas od času objeví požadavek, vygenerovat pomocí T-SQL jazyka výstupní data přímo ve formátu HTML, např. pro export do webové aplikace. Náramně užitečné to může být i v případě, pokud si necháváme přímo z SQL Serveru posílat různé emailové notifikace a rádi bychom je doplnili daty tak,…

Read more