SQL Server

Dočasné uložené procedury

Že je možné v SQL Serveru vytvářet také dočasné uložené procedury ví opravdu jen málo kdo. Ptám se na to s oblibou při náboru nových kandidátů a 9 z 10 se mne zeptá, že jsem měl zřejmě na mysli dočasné tabulky, případně začnou mluvit rovnou o nich. Tedy ano, opravdu…

Read more
T-SQL

COUNT() a eliminace NULL hodnot

Agregační funkce v SQL serveru ignorují hodnoty NULL. V praxi to znamená, že pokud agregujeme data ve sloupcích a některé řádky obsahují NULL hodnoty, tyto hodnoty se do naší agregace nezapočítají. Pro funkce typu SUM() je to očekávané chování, ale již ne tak pro AVG() nebo COUNT(). Funkce COUNT() se…
T-SQL

Window funkce v T-SQL

Základní window funkce v SQL Serveru známe všichni: ROW_NUMBER(),  RANK(), DENSE_RANK() a NTILE(). K nim se v dalších verzích SQL Serveru přidaly ještě funkce LEAD() a LAG(), na ty se ale podíváme někdy příště. Dnešní článek se nebude věnovat detailům jednotlivých funkcí, ale měl se stát spíše rozcestníkem, do něhož…
T-SQL

Vygenerování náhodného čísla pomocí NEWID()

Generování náhodných čísel v SQL Serveru může být čas od času pěkný oříšek, zejména pokud začínající vývojáři sáhnout po funkci RAND(). První, na co narazí, je, že tato funkce generuje stále stejné hodnoty, pokud ji chceme použít v dotazu s více řádky, jak je hezky vidět v tomto příkladu: SELECT…

Read more
T-SQL

CTE with multiple anchors

Common Table Expression (CTE) offers a lot of options on how to play with it. One of them is using recursion with an anchor which is in the standard scenario one row. But we can have a more complex anchor: instead of one row, it can be i.e. union on…
SQL Server

Identity sloupce a práce s nimi

Dnes se podíváme na stručný přehled všech důležitých funkcí, globálních proměnných a DBCC příkazů pro práci s IDENTITY hodnotami v SQL Serveru. Programátoři často chybují, kdy použít kterou z nich, zejména pak z neznalosti toho, jak se jednotlivé funkce chovají v rámci kontextu, ve kterém jsou volány (tělo uložené procedury,…

Read more
SQL Server

Why it matters if COLLATE is used in WHERE

There is a lot of things we shouldn’t do or use in WHERE clause, i.e scalar functions or data types conversion. They can lead to a suboptimal execution plan and cause serious performance degradation. A similar situation exists for the COLLATE statement. If it is used in WHERE it prevents…
SQL Server

Spojení řetězců pomocí FOR XML PATH

Spojení textových řetězců z více sloupců na řádek můžeme v SQL Serveru v edicích 2016 a nižších vyřešit pomocí FOR XML PATH a je to i vůbec nejpoužívanější způsob. V SQL Serveru 2017 dosáhneme stejného výsledku mnohem elegantnější cestou pomocí funkce STRING_AGG(), která ve všem plně nahradí FOR XML PATH.
DBA

Logging schema changes using DDL trigger

Logging schema changes (DDL) in the database is a common requirement in many organizations or development teams. We can choose from many tools offering complex auditing or write our solution. Let’s build our one and keep it as simple as possible. Please remember that the event log can be manipulated…

Read more