Delen via


CONCAT (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-eindpunt in Microsoft FabricMagazijn in Microsoft FabricSQL-database in Microsoft Fabric

Deze functie retourneert een tekenreeks die het resultaat is van de samenvoeging of het samenvoegen van twee of meer tekenreekswaarden op een end-to-end-manier.

Opmerking

Om tijdens het concatenatie een scheidingswaarde toe te voegen, gebruik CONCAT_WS.

Transact-SQL syntaxis-conventies

Syntaxis

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

Arguments

argument1, argument2 [ argumentN ]

Een expressie van een tekenreekswaarde. De functie CONCAT vereist ten minste twee argumenten en niet meer dan 254 argumenten.

Retourtypen

Een tekenreekswaarde waarvan de lengte en het type afhankelijk zijn van de invoer.

Opmerkingen

CONCAT neemt een variabel aantal tekenreeksargumenten en voegt deze samen (of voegt ze samen) in één tekenreeks. Het vereist minimaal twee invoerwaarden; anders CONCAT ontstaat er een fout. CONCAT converteert impliciet alle argumenten naar tekenreekstypen voordat deze worden samengevoegd. CONCAT impliciet wordt nulwaarden omgezet in lege strings. Als CONCAT argumenten ontvangt met alle NULL waarden, wordt een lege tekenreeks van het type varchar(1)geretourneerd. De impliciete conversie naar tekenreeksen volgt de bestaande regels voor conversies van gegevenstypen. Voor meer informatie over datatypeconversies, zie CAST and CONVERT (Transact-SQL).

Het retourtype hangt af van het type argumenten. Deze tabel illustreert de afbeelding:

Invoertype Uitvoertype en lengte
1. Elk argument van een SQL-CLR systeemtype, een SQL-CLR UDT, of nvarchar(max) nvarchar(max)
2. Anders kan elk argument van het type varbinary(max) of varchar(max) varchar(max), tenzij een van de parameters een nvarchar van willekeurige lengte is. In dit geval geeft CONCAT een resultaat van type nvarchar(max) terug.
3. Anders geldt elk argument van type nvarchar tot 4000 tekens (nvarchar(<= 4000)) nvarchar(<= 4000)
4. In alle andere gevallen elk argument van type varchar tot 8000 tekens (varchar(<= 8000)), tenzij een van de parameters een nvarchar van willekeurige lengte is. In dat geval CONCAT geeft een resultaat van type nvarchar(max) terug.

Wanneer CONCATnvarchar-invoerargumenten van lengte <= 4000 tekens worden ontvangen, of varchar-invoerargumenten van lengte <= 8000 tekens, kunnen impliciete conversies de lengte van het resultaat beïnvloeden. Andere datatypen hebben verschillende lengtes wanneer ze impliciet worden omgezet in strings. Bijvoorbeeld, een int met waarde 14 heeft een snaarlengte van 2, terwijl een float met waarde 1234.56789 een snaarlengte van 7 heeft (1234.57). Daarom levert een concatenatie van deze twee waarden een resultaat op met een lengte van niet minder dan 9 tekens.

Als geen van de invoerargumenten een ondersteund large object (LOB) type heeft, dan wordt het retourtype korter tot 8.000 tekens, ongeacht het retourtype. Deze afkorting behoudt ruimte en ondersteunt de efficiëntie van plangeneratie.

CONCAT kan op afstand worden uitgevoerd op een gekoppelde server die SQL Server 2012 (11.x) en latere versies draait. Voor oudere gekoppelde servers vindt de CONCAT operatie lokaal plaats, nadat de gekoppelde server de niet-gekoppelde waarden heeft teruggegeven.

Voorbeelden

Eén. Gebruik CONCAT

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

Hier is het resultatenoverzicht.

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

B. Gebruik CONCAT met NULL-waarden

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;

Hier is het resultatenoverzicht.

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