Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy do: SQL Server 2017 (14.x) i późniejsze wersje
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
Ta funkcja zwraca ciąg wynikowy z łączenia lub łączenia dwóch lub większej liczby wartości ciągu w sposób end-to-end. Oddziela te wartości połączonych ciągów za pomocą ogranicznika określonego w pierwszym argumencie funkcji. (CONCAT_WS wskazuje, połączyć z separatorem.)
Składnia
CONCAT_WS ( separator , argument1 , argument2 [ , argumentN ] ... )
Argumenty
separatora
Wyrażenie dowolnego typu znaku (char, nchar, nvarcharlub varchar).
argument1, argument2 [ , argumentN ]
Wyrażenie dowolnej wartości ciągu. Funkcja CONCAT_WS wymaga co najmniej dwóch argumentów i nie więcej niż 254 argumentów.
Typy zwracane
Wartość ciągu, której długość i typ zależą od danych wejściowych.
Uwagi
CONCAT_WS przyjmuje zmienną liczbę argumentów ciągów i łączy je (lub sprzężenia) w jeden ciąg. Oddziela te wartości połączonych ciągów za pomocą ogranicznika określonego w pierwszym argumencie funkcji.
CONCAT_WS wymaga argumentu separatora i co najmniej dwóch innych argumentów wartości ciągu; w przeciwnym razie CONCAT_WS zgłasza błąd.
CONCAT_WS niejawnie konwertuje wszystkie argumenty na typy ciągów przed łączeniem.
Niejawna konwersja na ciągi jest zgodna z istniejącymi regułami konwersji typów danych. Aby uzyskać więcej informacji na temat zachowania i konwersji typów danych, zobacz CONCAT (Transact-SQL).
Traktowanie wartości NULL
CONCAT_WS ignoruje ustawienie SET CONCAT_NULL_YIELDS_NULL { ON | OFF }.
Jeśli CONCAT_WS odbiera argumenty ze wszystkimi wartościami NULL, zwraca pusty ciąg typu varchar(1).
CONCAT_WS ignoruje wartości null podczas łączenia i nie dodaje separatora między wartościami null. W związku z tym CONCAT_WS może czysta obsługa łączenia ciągów, które mogą mieć wartości "puste" — na przykład drugie pole adresu. Aby uzyskać więcej informacji, zobacz Przykład B.
Jeśli scenariusz obejmuje wartości null oddzielone ogranicznikiem, rozważ funkcję ISNULL. Aby uzyskać więcej informacji, zobacz Przykład C.
Przykłady
A. Łączenie wartości z separatorem
W tym przykładzie łączy trzy kolumny z tabeli sys.databases, oddzielając wartości łącznikiem otoczonym spacjami (-).
SELECT CONCAT_WS(' - ', database_id, recovery_model_desc, containment_desc) AS DatabaseInfo
FROM sys.databases;
Oto zestaw wyników.
DatabaseInfo
-----------------
1 - SIMPLE - NONE
2 - SIMPLE - NONE
3 - FULL - NONE
4 - SIMPLE - NONE
B. Pomiń wartości NULL
W tym przykładzie ignoruje NULL wartości na liście argumentów i używa wartości separatora przecinka (,).
SELECT CONCAT_WS(',', '1 Microsoft Way', NULL, NULL, 'Redmond', 'WA', 98052) AS Address;
Oto zestaw wyników.
Address
--------------------------------
1 Microsoft Way,Redmond,WA,98052
C. Generowanie danych sformatowanych w formacie CSV na podstawie tabeli
W tym przykładzie użyto wartości separatora przecinka (,) i dodano znak powrotu karetki CHAR(13) w formacie wartości rozdzielanych przecinkami zestawu wyników.
SELECT STRING_AGG(
CONCAT_WS(',', database_id, recovery_model_desc, containment_desc), CHAR(13)
) AS DatabaseInfo
FROM sys.databases;
Oto zestaw wyników.
DatabaseInfo
-------------
1,SIMPLE,NONE
2,SIMPLE,NONE
3,FULL,NONE
4,SIMPLE,NONE
CONCAT_WS ignoruje wartości NULL w kolumnach. Zawijaj kolumnę dopuszczaną do wartości null za pomocą funkcji ISNULL i podaj wartość domyślną. Na przykład:
SELECT STRING_AGG(
CONCAT_WS(',', database_id, ISNULL(recovery_model_desc, ''), ISNULL(containment_desc, 'N/A')), CHAR(13)
) AS DatabaseInfo
FROM sys.databases;