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 se jedná o zkratku z anglického With Separator.

Porovnejme si nyní obě funkce na jednoduchém příkladu:

DECLARE @String1 NVARCHAR(100) = 'String1'
DECLARE @String2 NVARCHAR(100) = 'String2'
DECLARE @String3 NVARCHAR(100) = 'String3'

SELECT 'CONCAT()' [Function],	 CONCAT(@String1, @String2, @String3) Result
UNION ALL
SELECT 'CONCAT()_WS' [Function], CONCAT_WS(', ', @String1, @String2, @String3)
GO

Dobrá zpráva je, že separátor můžeme zaslat do funkce i jako parametr, čímž získáváme mnohem větší svobodu při psaní kódu:

DECLARE @String1 NVARCHAR(100) = 'String1'
DECLARE @String2 NVARCHAR(100) = 'String2'
DECLARE @String3 NVARCHAR(100) = 'String3'

DECLARE @Separator CHAR(1) = '-'

SELECT 'CONCAT()_WS' [Function], CONCAT_WS(@Separator, @String1, @String2, @String3)
GO

Leave a Reply

Your email address will not be published. Required fields are marked *