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
T-SQL

Specifying FILEGROUP in SELECT * INTO

SQL Server 2017 and SP2 for SQL 2016 bring a small enhancement of SELECT .. INTO clause which offers more possibilities on how to solve some DBA head-scratching situations. It’s possible to specify FILEGROUP where the new table will be created. Till now it was only in the PRIMARY filegroup…
T-SQL

TRIM() přichází: LTRIM(RTRIM()) v propadlišti dějin

Nová funkce TRIM(), která přichází v SQL Serveru 2017, je opravu jen logickou kombinací dvou funkcí RTRIM() a LTRIM() vnořených do sebe, ale i tak se jedná o milé vylepšení T-SQL jazyka, který se tím kompatibilitou zase o kousek blíží SQL standardům implementovaných v konkurenčních RDBMS. Syntaktické a funkční srovnání…

Read more
T-SQL

TRANSLATE() jako alternativa k řetězení REPLACE() funkcí

Další novou zajímavou funkcí pro práci s řetězci v SQL Serveru 2017 je funkce TRANSLATE(), která funguje jako šikovná náhrada více REPLACE() funkcí vnořených do sebe. Funkce má tři vstupní parametry: TRANSLATE ( inputString, characters, translations) inputString je řetězec, v němž chceme provést nahrazení characters jsou znaky, které chceme nahradit…
T-SQL

CONCAT_WS() - Nová funkce pro spojení řetězců s výběrem separátoru

Od SQL Serveru 2012 máme možnost spojovat řetězce pomocí funkce CONCAT(), která však neumí nic jiného, než prosté spojení řetězců za sebe a není možné specifikovat separátor, kterým bychom od sebe jednotlivé řetězce mohli oddělit. SQL Server 2017 proto přichází s novou funkcí CONCAT_WS(), kde již přídavek WS napovídá, že…
T-SQL

UNPIVOT()

PIVOT() a UNPIVOT() jsou velmi užitečné funkce jazyka T-SQL. My si dnes ukážeme použití UNPIVOT() funkce na příkladu s objednávkami a jejich cenou a daňovou sazbou. K tomu přidáme i ukázku toho, jak využít možnosti řetězení UNPIVOT() funkcí v jedno dotazu a jak šikovným trikem dosáhnout požadovaného výstupu. A jako…

Read more
T-SQL

TRY & CATCH pattern

TRY & CATCH should be used where reasonable to prevent unhandled exceptions in T-SQL code and routines. It’s prepared for copy/paste purposes for everyday use. We may have two basic types of pattern: The new one using THROW keyword The legacy one with RAISERROR() THROW version: BEGIN TRY BEGIN TRAN…
T-SQL

CREATE TABLE syntax surprise

What do you think: Is this valid CREATE TABLE statement? CREATE TABLE dbo.SampleTable (ID INT,) GO Definitely yes! Try it by your own. The only one reason how to explain I see that after comma there can be 0 or n members (empty) collection of constraints like in this sample:…
T-SQL

Hrátky s Table Value Constructorem

Table Value Constructor (TVC) je v SQL Serveru sice již od verze 2008, ale vzhledem k tomu, jak moc si s ním můžeme vyhrát, nebude na škodu si projít pár zajímavých příkladů jeho použití. Jen pro zopakování si připomeňme, že TVC je set jednoho nebo více řádkových výrazů, pomocí kterých…

Read more