Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analysplattformssystem (PDW)
SQL-analysslutpunkt i Microsoft Fabric
Lager i Microsoft Fabric
SQL-databas i Förhandsversion av Microsoft Fabric
En operator i ett stränguttryck som sammanfogar två eller flera tecken eller binära strängar, kolumner eller en kombination av strängar och kolumnnamn i ett uttryck (en strängoperator). Returnerar bookcasetill exempel SELECT 'book'+'case'; .
Transact-SQL syntaxkonventioner
Syntax
expression + expression
Arguments
expression
Ett giltigt uttryck för någon av datatyperna i kategorin tecken och binär datatyp, förutom datatyperna bild, ntext eller text . Båda uttrycken måste ha samma datatyp, eller så måste ett uttryck kunna konverteras implicit till datatypen för det andra uttrycket.
Return types
Returnerar datatypen för argumentet med högsta prioritet. Mer information finns i Datatypspriorence.
Remarks
Om resultatet av sammanlänkningen av strängar överskrider gränsen på 8 000 byte trunkeras resultatet. Men om minst en av de sammanfogade strängarna är en stor värdetyp sker trunkering inte.
Strängar och tecken med noll längd
Strängsammanfogningsoperatorn + fungerar annorlunda när den fungerar med en tom sträng med noll längd än när den fungerar med NULLeller okända värden. En teckensträng med noll längd kan anges som två enkla citattecken utan några tecken inom citattecknen. En binär sträng med noll längd kan anges som 0x utan några bytevärden som anges i hexadecimal konstanten. När du sammanfogar en sträng med noll längd sammanfogas alltid de två angivna strängarna.
Sammanfogning av NULL-värden
När du arbetar med strängar med ett NULL värde beror resultatet av sammanlänkningen på sessionsinställningarna. Precis som med aritmetiska åtgärder som utförs på NULL värden, när ett NULL värde läggs till ett känt värde är resultatet vanligtvis ett okänt värde, en strängsammanfogningsåtgärd som utförs med ett NULL värde, bör också ge ett NULL resultat.
Du kan dock ändra det här beteendet genom att ändra inställningen CONCAT_NULL_YIELDS_NULL för för den aktuella sessionen. Mer information finns i SET CONCAT_NULL_YIELDS_NULL.
Användning av CAST och CONVERT vid behov
En explicit konvertering till teckendata måste användas när binära strängar sammanfogas och eventuella tecken mellan de binära strängarna.
Följande exempel visar när CONVERT, eller CAST, måste användas med binär sammanlänkning och när CONVERT, eller CAST, inte behöver användas.
I det här exemplet krävs ingen CONVERT eller CAST funktion eftersom det här exemplet sammanfogar två binära strängar.
DECLARE @mybin1 VARBINARY(5), @mybin2 VARBINARY(5);
SET @mybin1 = 0xFF;
SET @mybin2 = 0xA5;
-- No CONVERT or CAST function is required because this example
-- concatenates two binary strings.
SELECT @mybin1 + @mybin2;
I det här exemplet krävs en CONVERT- eller CAST-funktion eftersom det här exemplet sammanfogar två binära strängar plus ett blanksteg.
DECLARE @mybin1 VARBINARY(5), @mybin2 VARBINARY(5);
SET @mybin1 = 0xFF;
SET @mybin2 = 0xA5;
-- A CONVERT or CAST function is required because this example
-- concatenates two binary strings plus a space.
SELECT CONVERT(VARCHAR(5), @mybin1) + ' '
+ CONVERT(VARCHAR(5), @mybin2);
-- Here is the same conversion using CAST.
SELECT CAST(@mybin1 AS VARCHAR(5)) + ' '
+ CAST(@mybin2 AS VARCHAR(5));
Examples
Kodexemplen i den här artikeln använder AdventureWorks2022- eller AdventureWorksDW2022-exempeldatabasen, som du kan ladda ned från startsidan Microsoft SQL Server Samples och Community Projects.
A. Använda strängsammanfogning
I följande exempel skapas en enskild kolumn under kolumnrubriken Name från flera teckenkolumner, med familjenamnet för personen följt av ett kommatecken, ett enda blanksteg och sedan personens förnamn. Resultatuppsättningen är i stigande, alfabetisk ordning efter familjenamnet och sedan efter förnamnet.
SELECT (LastName + ', ' + FirstName) AS Name
FROM Person.Person
ORDER BY LastName ASC, FirstName ASC;
B. Kombinera numeriska datatyper och datumdatatyper
I följande exempel används funktionen CONVERT för att sammanfoga numeriska och datum datatyper.
SELECT 'The order is due on ' + CONVERT(VARCHAR(12), DueDate, 101)
FROM Sales.SalesOrderHeader
WHERE SalesOrderID = 50001;
GO
Här är resultatet.
------------------------------------------------
The order is due on 04/23/2007
C. Använda sammanfogning av flera strängar
I följande exempel sammanfogas flera strängar för att bilda en lång sträng för att visa familjenamnet och den första initialen av vicepresidenterna på Adventure Works Cycles. Ett kommatecken läggs till efter familjenamnet och en punkt efter den första initialen.
SELECT (LastName + ',' + SPACE(1) + SUBSTRING(FirstName, 1, 1) + '.') AS Name, e.JobTitle
FROM Person.Person AS p
JOIN HumanResources.Employee AS e
ON p.BusinessEntityID = e.BusinessEntityID
WHERE e.JobTitle LIKE 'Vice%'
ORDER BY LastName ASC;
GO
Här är resultatet.
Name Title
------------- ---------------`
Duffy, T. Vice President of Engineering
Hamilton, J. Vice President of Production
Welcker, B. Vice President of Sales
D. Använda stora strängar i sammanfogning
I följande exempel sammanfogas flera strängar för att bilda en lång sträng och försöker sedan beräkna längden på den sista strängen. Den slutliga längden på resultatuppsättningen är 16 000 eftersom uttrycksutvärderingen börjar från vänster, dvs. @x + @z + @y => (@x + @z) + @y. I det här fallet trunkeras resultatet av (@x + @z) till 8 000 byte och sedan läggs @y till i resultatuppsättningen, vilket gör den slutliga stränglängden till 16 000. Eftersom @y är en sträng av stor värdetyp sker inte trunkering.
DECLARE @x VARCHAR(8000) = REPLICATE('x', 8000)
DECLARE @y VARCHAR(max) = REPLICATE('y', 8000)
DECLARE @z VARCHAR(8000) = REPLICATE('z',8000)
SET @y = @x + @z + @y
-- The result of following select is 16000
SELECT LEN(@y) AS y
GO
Här är resultatet.
y
-------
16000
Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)
Kodexemplen i den här artikeln använder AdventureWorks2022- eller AdventureWorksDW2022-exempeldatabasen, som du kan ladda ned från startsidan Microsoft SQL Server Samples och Community Projects.
E. Använda sammanfogning av flera strängar
I följande exempel sammanfogas flera strängar för att bilda en lång sträng för att visa familjenamnet och den första initialen av vicepresidenterna i en exempeldatabas. Ett kommatecken läggs till efter familjenamnet och en punkt efter den första initialen.
SELECT (LastName + ', ' + SUBSTRING(FirstName, 1, 1) + '.') AS Name, Title
FROM DimEmployee
WHERE Title LIKE '%Vice Pres%'
ORDER BY LastName ASC;
Här är resultatet.
Name Title
------------- ---------------
Duffy, T. Vice President of Engineering
Hamilton, J. Vice President of Production
Welcker, B. Vice President of Sales
Related content
- || (Strängsammanfogning) (Transact-SQL)
- += (Strängsammanfogningstilldelning) (Transact-SQL)
- ÄNDRA DATABAS (Transact-SQL)
- CAST och CONVERT (Transact-SQL)
- datatypkonvertering (databasmotor)
- Datatyper (Transact-SQL)
- Expressions (Transact-SQL)
- Inbyggda funktioner (Transact-SQL)
- Operators (Transact-SQL)
- SELECT (Transact-SQL)
- SET-instruktioner (Transact-SQL)