T-SQL

UPDATE pomocí aliasu tabulky

Napsat správně UPDATE příkaz může vypadat jako trivialita, ale opak je pravdou. Nehod, kdy se někomu nezadařilo a oprava dat ze záloh zabrala několik hodin, jsem zažil dost. Dnes si ukážeme alespoň drobné vylepšení, jak správně na UPDATE a věřím, že to leckomu z juniorů ušetří pár bezesných nocí:) Kouzlo…

Read more
T-SQL

Explicitní vložení do IDENTITY sloupce

Pokud máme tabulku, která obsahuje IDENTITY sloupec, generuje SQL Server nového hodnoty pro IDENTITY sloupec automaticky. Pokud přeci jen chceme vložit hodnotu sami a nespoléhat na automatický generátor, stačí použít SET IDENTITY INSERT ON|OFF příkaz, jak ukazuje následující příklad: SET IDENTITY_INSERT SampleTable ON GO INSERT SampleTable (RowID, Name, Value) VALUES…
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…
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…

Read more
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…
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…

Read more
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,…
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…

Read more