Udostępnij za pomocą


CONCAT (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze 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.

Uwaga / Notatka

Aby dodać wartość rozdzielającą podczas łączenia, użyj CONCAT_WS.

Transact-SQL konwencje składni

Składnia

CONCAT ( argument1 , argument2 [ , argumentN ] ... )

Arguments

argument1, argument2 [ , argumentN ]

Wyrażenie dowolnej wartości ciągu. Funkcja CONCAT 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 przyjmuje zmienną liczbę argumentów ciągów i łączy je (lub sprzężenia) w jeden ciąg. Wymaga minimum dwóch wartości wejściowych; w przeciwnym razie powoduje błąd CONCAT . CONCAT niejawnie konwertuje wszystkie argumenty na typy ciągów przed łączeniem. CONCAT niejawnie konwertuje wartości zerowe na puste ciągi znaków. Jeśli CONCAT odbiera argumenty ze wszystkimi wartościami NULL, zwraca pusty ciąg typu varchar(1). Niejawna konwersja na ciągi jest zgodna z istniejącymi regułami konwersji typów danych. Więcej informacji o konwersjach typów danych można znaleźć w CAST i CONVERT (Transact-SQL).

Typ zwrotu zależy od typu argumentów. Ta tabela ilustruje odwzorowanie:

Typ danych wejściowych Typ wyjścia i długość
1. Dowolny argument typu SQL-CLR, SQL-CLR UDT lub nvarchar(max) nvarchar(max)
2. W przeciwnym razie dowolny argument typu varbinary(max) lub varchar(max) varchar(max), chyba że jednym z parametrów jest nvarchar o dowolnej długości. W tym przypadku zwraca CONCAT wynik typu nvarchar(max).
3. W przeciwnym razie każdy argument typu nvarchar o długości do 4000 znaków (nvarchar(<= 4000)) nvarchar(<= 4000)
4. We wszystkich pozostałych przypadkach Dowolny argument typu varchar o długości do 8000 znaków (varchar(<= 8000)), chyba że jeden z parametrów jest nvarcharem o dowolnej długości. W takim przypadku zwraca CONCAT wynik typu nvarchar(max).

Gdy CONCAT otrzymuje argumenty wejściowe nvarchar o długości <= 4000 znaków lub argumenty wejściowe varchar o długości <= 8000 znaków, niejawne konwersje mogą wpływać na długość wyniku. Inne typy danych mają różną długość po niejawnym przekształcaniu w ciągi tekstów. Na przykład int o wartości 14 ma długość ciągu równą 2, podczas gdy zmienność o wartości 1234.56789 ma długość ciągu 7 (1234.57). Dlatego połączenie tych dwóch wartości daje wynik o długości nie mniejszej niż 9 znaków.

Jeśli żaden z argumentów wejściowych nie ma obsługiwanego dużego typu obiektu (LOB), typ return skraca się do 8 000 znaków, niezależnie od typu return. To obcięcie oszczędza przestrzeń i wspiera efektywność generowania planów.

CONCAT może być wykonywany zdalnie na połączonym serwerze działającym na SQL Server 2012 (11.x) i nowszych wersjach. Dla starszych serwerów połączonych operacja odbywa CONCAT się lokalnie, po tym jak serwer powiązany zwróci wartości niepołączone.

Przykłady

A. Użyj CONCAT

SELECT CONCAT ('Happy ', 'Birthday ', 11, '/', '25') AS Result;

Oto zestaw wyników.

Result
--------------------
Happy Birthday 11/25

B. Użyj CONCAT z wartościami NULL

CREATE TABLE #temp (
    emp_name NVARCHAR(200) NOT NULL,
    emp_middlename NVARCHAR(200) NULL,
    emp_lastname NVARCHAR(200) NOT NULL
    );

INSERT INTO #temp
VALUES ('Name', NULL, 'Lastname');

SELECT CONCAT (emp_name, emp_middlename, emp_lastname) AS Result
FROM #temp;

Oto zestaw wyników.

Result
------------
NameLastname