CONCAT (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Microsoft Fabric

Den här funktionen returnerar en sträng som är resultatet av sammanfogningen eller sammanfogningen av två eller flera strängvärden på ett sätt från slutpunkt till slutpunkt.

Anmärkning

För att lägga till ett separationsvärde under sammanfogning, använd CONCAT_WS.

Transact-SQL syntaxkonventioner

Syntax

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

Arguments

argument1, argument2 [ , argumentN ]

Ett uttryck för valfritt strängvärde. Funktionen CONCAT kräver minst två argument och högst 254 argument.

Returtyper

Ett strängvärde vars längd och typ beror på indata.

Anmärkningar

CONCAT tar ett variabelt antal strängargument och sammanfogar (eller kopplar) dem till en enda sträng. Den kräver minst två indatavärden; annars CONCAT uppstår ett fel. CONCAT konverterar implicit alla argument till strängtyper före sammanfogning. CONCAT omvandlar implicit nullvärden till tomma strängar. Om CONCAT tar emot argument med alla NULL värden returneras en tom sträng av typen varchar(1). Den implicita konverteringen till strängar följer de befintliga reglerna för datatypskonverteringar. För mer information om datatypkonverteringar, se CAST and CONVERT (Transact-SQL).

Returtypen beror på typen av argument. Denna tabell illustrerar avbildningen:

Inmatningstyp Utgångstyp och längd
1. Varje argument av en SQL-CLR systemtyp, en SQL-CLR UDT eller nvarchar(max) nvarchar(max)
2. Annars, vilket argument som helst av typen varbinary(max) eller varchar(max) varchar(max), om inte en av parametrarna är en nvarchar av valfri längd. I detta fall returnerar CONCAT ett resultat av typen nvarchar(max).
3. Annars, vilket argument som helst av typen nvarchar på upp till 4000 tecken (nvarchar(<= 4000)) nvarchar(<= 4000)
4. I alla andra fall Varje argument av typen varchar på upp till 8000 tecken (varchar(<= 8000)), om inte en av parametrarna är en nvarchar av valfri längd. I det fallet returnerar CONCAT ett resultat av typen nvarchar(max).

När CONCATnvarchar-indataargument av längd <= 4000 tecken, eller varchar-indataargument av längd <= 8000 tecken, kan implicita konverteringar påverka resultatets längd. Andra datatyper har olika längder när de implicit konverteras till strängar. Till exempel har en int med värde 14 en stränglängd på 2, medan en flyttal med värde 1234.56789 har en stränglängd på 7 (1234.57). Därför ger en sammanfogning av dessa två värden ett resultat med en längd på minst 9 tecken.

Om inget av indataargumenten har en stödd stor objekttyp (LOB), så förkortas returtypen till 8 000 tecken, oavsett returtyp. Denna förkortning bevarar utrymme och stödjer effektiviteten i plangenerering.

CONCAT kan köras på distans på en länkad server som kör SQL Server 2012 (11.x) och senare versioner. För äldre länkade servrar sker operationen CONCAT lokalt, efter att den länkade servern returnerat de icke-sammanlänkade värdena.

Examples

A. Använd CONCAT

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

Här är resultatet.

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

B. Använd CONCAT med NULL-värden

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;

Här är resultatet.

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