Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí na: SQL Server 2017 (14.x) a novější verze
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL analytics endpoint in Microsoft Fabric
Warehouse in Microsoft Fabric
SQL database in Microsoft Fabric
Tato funkce vrátí řetězec, který je výsledkem zřetězení nebo spojení dvou nebo více řetězcových hodnot koncovým způsobem. Tyto zřetězené řetězcové hodnoty odděluje oddělovačem zadaným v prvním argumentu funkce. (CONCAT_WS označuje zřetězení s oddělovačem.)
Syntax
CONCAT_WS ( separator , argument1 , argument2 [ , argumentN ] ... )
Argumenty
oddělovač
Výraz libovolného typu znaku (znak, nchar, nvarcharnebo varchar).
argument1, argument2 [ , argumentN ]
Výraz libovolné řetězcové hodnoty. Funkce CONCAT_WS vyžaduje alespoň dva argumenty a maximálně 254 argumentů.
Návratové typy
Řetězcová hodnota, jejíž délka a typ závisí na vstupu.
Poznámky
CONCAT_WS vezme proměnný počet řetězcových argumentů a zřetězí je (nebo spojí) do jednoho řetězce. Tyto zřetězené řetězcové hodnoty odděluje oddělovačem zadaným v prvním argumentu funkce.
CONCAT_WS vyžaduje argument oddělovače a minimálně dva další argumenty řetězcové hodnoty; jinak CONCAT_WS vyvolá chybu.
CONCAT_WS implicitně převede všechny argumenty na typy řetězců před zřetězením.
Implicitní převod na řetězce se řídí existujícími pravidly pro převody datových typů. Další informace o chování a převodech datových typů najdete v tématu CONCAT (Transact-SQL).
Ošetření hodnot NULL
CONCAT_WS ignoruje nastavení SET CONCAT_NULL_YIELDS_NULL { ON | OFF }.
Pokud CONCAT_WS obdrží argumenty se všemi hodnotami NULL, vrátí prázdný řetězec typu varchar(1).
CONCAT_WS během zřetězení ignoruje hodnoty null a nepřidá oddělovač mezi hodnoty null. Proto CONCAT_WS může vyčistit zřetězení řetězců, které mohou mít "prázdné" hodnoty – například druhé pole adresy. Další informace naleznete v tématu Příklad B.
Pokud scénář zahrnuje hodnoty null oddělené oddělovačem, zvažte funkci ISNULL. Další informace naleznete v tématu Příklad C.
Příklady
A. Zřetězení hodnot s oddělovačem
Tento příklad zřetězí tři sloupce z tabulky sys.databases a odděluje hodnoty spojovníkem obklopeným mezerami (-).
SELECT CONCAT_WS(' - ', database_id, recovery_model_desc, containment_desc) AS DatabaseInfo
FROM sys.databases;
Tady je sada výsledků.
DatabaseInfo
-----------------
1 - SIMPLE - NONE
2 - SIMPLE - NONE
3 - FULL - NONE
4 - SIMPLE - NONE
B. Přeskočit hodnoty NULL
Tento příklad ignoruje NULL hodnoty v seznamu argumentů a používá hodnotu oddělovače čárky (,).
SELECT CONCAT_WS(',', '1 Microsoft Way', NULL, NULL, 'Redmond', 'WA', 98052) AS Address;
Tady je sada výsledků.
Address
--------------------------------
1 Microsoft Way,Redmond,WA,98052
C. Generování dat formátovaných csv z tabulky
Tento příklad používá hodnotu oddělovače čárky (,) a přidá návratový znak řádku CHAR(13) ve formátu hodnot oddělených čárkami sady výsledků.
SELECT STRING_AGG(
CONCAT_WS(',', database_id, recovery_model_desc, containment_desc), CHAR(13)
) AS DatabaseInfo
FROM sys.databases;
Tady je sada výsledků.
DatabaseInfo
-------------
1,SIMPLE,NONE
2,SIMPLE,NONE
3,FULL,NONE
4,SIMPLE,NONE
CONCAT_WS ignoruje hodnoty NULL ve sloupcích. Zabalte sloupec s možnou hodnotou null pomocí funkce ISNULL a zadejte výchozí hodnotu. Například:
SELECT STRING_AGG(
CONCAT_WS(',', database_id, ISNULL(recovery_model_desc, ''), ISNULL(containment_desc, 'N/A')), CHAR(13)
) AS DatabaseInfo
FROM sys.databases;
Související obsah
- CONCAT (Transact-SQL)
- FORMATMESSAGE (Transact-SQL)
- QUOTENAME (Transact-SQL)
- NAHRADIT (Transact-SQL)
- REVERSE (Transact-SQL)
- STRING_AGG (Transact-SQL)
- STRING_ESCAPE (Transact-SQL)
- STUFF (Transact-SQL)
- TRANSLATE (Transact-SQL)
- řetězcové funkce (Transact-SQL)