+ (Zeichenfolgenverkettung) (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL-Analyseendpunkt in Microsoft Fabric Warehouse in Microsoft Fabric SQL-Datenbank in Microsoft Fabric
Ein Operator in einem Zeichenfolgenausdruck, der zwei oder mehr Zeichenfolgen, binäre Zeichenfolgen oder Spalten oder eine Kombination aus Zeichenfolgen und Spaltennamen zu einem Ausdruck verkettet (ein Zeichenfolgenoperator). SELECT 'book'+'case';
gibt beispielsweise bookcase
zurück.
Transact-SQL-Syntaxkonventionen
Syntax
expression + expression
Argumente
expression
Ein beliebiger gültiger Ausdruck eines der Datentypen in der Kategorie "Zeichen" und "Binärdatentyp" mit Ausnahme der Datentypen "Bild", "ntext" oder "Text ". Beide Ausdrücke müssen denselben Datentyp haben, oder es muss möglich sein, einen Ausdruck implizit in den Datentyp des anderen Ausdrucks zu konvertieren.
Rückgabetypen
Gibt einen Wert vom Datentyp des Arguments zurück, das in der Rangfolge am höchsten steht. Weitere Informationen finden Sie unter "Rangfolge des Datentyps".
Hinweise
Wenn das Ergebnis der Verkettung von Zeichenfolgen den Grenzwert von 8.000 Byte übersteigt, wird das Ergebnis abgeschnitten. Wenn jedoch mindestens eine der verketteten Zeichenfolgen ein großer Werttyp ist, tritt keine Abkürzung auf.
Leere Zeichenfolgen und Zeichen
Der +
Zeichenfolgenverkettungsoperator verhält sich anders, wenn er mit einer leeren, 0-längen Zeichenfolge arbeitet als bei der Verwendung mit NULL
unbekannten Werten. Eine leere Zeichenfolge lässt sich als zwei einfache Anführungszeichen ohne Zeichen innerhalb der Anführungszeichen angeben. Eine binäre Zeichenfolge der Länge Null kann ohne 0x
Bytewerte angegeben werden, die in der Hexadezimalkonstante angegeben sind. Beim Verketten einer leeren Zeichenfolge werden immer die beiden angegebenen Zeichenfolgen verkettet.
Verkettung von NULL-Werten
Wenn Sie mit Zeichenfolgen mit einem NULL
Wert arbeiten, hängt das Ergebnis der Verkettung von den Sitzungseinstellungen ab. Wie bei arithmetischen Vorgängen, die für NULL
Werte ausgeführt werden, sollte auch ein Ergebnis erzeugt NULL
werden, wenn ein NULL
Wert einem bekannten Wert hinzugefügt wird, normalerweise ein unbekannter Wert, ein Zeichenfolgenverkettungsvorgang, der mit einem NULL
Wert ausgeführt wird.
Sie können dieses Verhalten jedoch ändern, indem Sie die CONCAT_NULL_YIELDS_NULL
-Einstellung für die aktuelle Sitzung ändern. Weitere Informationen finden Sie unter SET CONCAT_NULL_YIELDS_NULL.
Verwendung von CAST und CONVERT bei Bedarf
Bei der Verkettung binärer Zeichenfolgen und Zeichen zwischen den binären Zeichenfolgen muss eine explizite Konvertierung in Zeichendaten erfolgen.
In den folgenden Beispielen wird gezeigt, wann bzw. wann CONVERT
bzwCAST
. wann oder , wann CONVERT
CAST
oder , nicht verwendet werden muss.
In diesem Beispiel ist keine CONVERT
funktion erforderlich CAST
, da in diesem Beispiel zwei binäre Zeichenfolgen verkettet werden.
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;
In diesem Beispiel ist eine oder CAST
eine CONVERT
Funktion erforderlich, da in diesem Beispiel zwei binäre Zeichenfolgen und ein Leerzeichen verkettet werden.
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));
Beispiele
Die Transact-SQL-Codebeispiele in diesem Artikel verwenden die AdventureWorks2022
- oder AdventureWorksDW2022
-Beispieldatenbank, die Sie von der Homepage Microsoft SQL Server Samples and Community Projects herunterladen können.
A. Verwenden von Zeichenfolgenverkettung
Im folgenden Beispiel wird eine einzelne Spalte unter der Spaltenüberschrift Name
aus mehreren Zeichenspalten erstellt, wobei der Familienname der Person gefolgt von einem Komma, einem einzigen Leerzeichen und dann dem Vornamen der Person entspricht. Das Resultset befindet sich in aufsteigender, alphabetischer Reihenfolge nach dem Familiennamen und dann nach dem Vornamen.
SELECT (LastName + ', ' + FirstName) AS Name
FROM Person.Person
ORDER BY LastName ASC, FirstName ASC;
B. Kombinieren numerischer und Datumsdatentypen
Im folgenden Beispiel werden die Datentypen numeric und date mithilfe der CONVERT
-Funktion verkettet.
SELECT 'The order is due on ' + CONVERT(VARCHAR(12), DueDate, 101)
FROM Sales.SalesOrderHeader
WHERE SalesOrderID = 50001;
GO
Hier sehen Sie das Ergebnis.
------------------------------------------------
The order is due on 04/23/2007
C. Verwenden mehrerer Zeichenfolgenverkettung
Im folgenden Beispiel werden mehrere Zeichenfolgen verkettet, um eine lange Zeichenfolge zu bilden, um den Familiennamen und die erste Initiale der Vizepräsidenten bei Adventure Works Cycles anzuzeigen. Nach dem Familiennamen und einem Punkt nach der ersten Initiale wird ein Komma hinzugefügt.
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
Hier sehen Sie das Ergebnis.
Name Title
------------- ---------------`
Duffy, T. Vice President of Engineering
Hamilton, J. Vice President of Production
Welcker, B. Vice President of Sales
D: Verwenden großer Zeichenfolgen in Verkettung
Im folgenden Beispiel werden mehrere Zeichenfolgen zu einer langen Zeichenfolge verkettet. Anschließend wird versucht, die Länge der endgültigen Zeichenfolge zu berechnen. Die endgültige Länge des Resultsets ist 16.000, da die Ausdrucksauswertung von links beginnt, @x
+ @y
@z
+ d. h. => (@x + @z
) + . @y
In diesem Fall wird das Ergebnis von (@x
+ @z
) bei 8.000 Bytes abgeschnitten und dann @y
dem Resultset hinzugefügt, wodurch die endgültige Zeichenfolgenlänge 16.000 beträgt. Da @y
es sich um eine Zeichenfolge mit großem Werttyp handelt, tritt keine Abkürzung auf.
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
Hier sehen Sie das Ergebnis.
y
-------
16000
Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)
Die Transact-SQL-Codebeispiele in diesem Artikel verwenden die AdventureWorks2022
- oder AdventureWorksDW2022
-Beispieldatenbank, die Sie von der Homepage Microsoft SQL Server Samples and Community Projects herunterladen können.
E. Verwenden mehrerer Zeichenfolgenverkettung
Im folgenden Beispiel werden mehrere Zeichenfolgen verkettet, um eine lange Zeichenfolge zu bilden, um den Familiennamen und die erste Initiale der Vizepräsidenten in einer Beispieldatenbank anzuzeigen. Nach dem Familiennamen und einem Punkt nach der ersten Initiale wird ein Komma hinzugefügt.
SELECT (LastName + ', ' + SUBSTRING(FirstName, 1, 1) + '.') AS Name, Title
FROM DimEmployee
WHERE Title LIKE '%Vice Pres%'
ORDER BY LastName ASC;
Hier sehen Sie das Ergebnis.
Name Title
------------- ---------------
Duffy, T. Vice President of Engineering
Hamilton, J. Vice President of Production
Welcker, B. Vice President of Sales
Zugehöriger Inhalt
- || (Zeichenfolgenverkettung) (Transact-SQL)
- += (Zeichenfolgenverkettungszuweisung) (Transact-SQL)
- ALTER DATABASE (Transact-SQL)
- CAST und CONVERT (Transact-SQL)
- Datentypkonvertierung (Datenbank-Engine)
- Data types (Transact-SQL) (Datentypen (Transact-SQL))
- Ausdrücke (Transact-SQL)
- Integrierte Funktionen (Transact-SQL)
- Operatoren (Transact-SQL)
- SELECT (Transact-SQL)
- SET-Anweisungen (Transact-SQL)