Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Punkt końcowy analizy SQL w usłudze Microsoft Fabric
Magazyn w usłudze Microsoft Fabric
Baza danych SQL w usłudze Microsoft Fabric (wersja zapoznawcza)
Operator w wyrażeniu ciągu, który łączy co najmniej dwa znaki lub ciągi binarne, kolumny lub kombinację ciągów i nazw kolumn w jednym wyrażeniu (operator ciągu). Na przykład SELECT 'book'+'case';
zwraca wartość bookcase
.
Transact-SQL konwencje składni
Syntax
expression + expression
Arguments
expression
Dowolne prawidłowe wyrażenie dowolnego z typów danych w kategorii typów danych znaków i danych binarnych, z wyjątkiem typów danych obrazu, ntekstu lub tekstu . Oba wyrażenia muszą być tego samego typu danych lub jedno wyrażenie musi być niejawnie konwertowane na typ danych drugiego wyrażenia.
Return types
Zwraca typ danych argumentu o najwyższym pierwszeństwie. Aby uzyskać więcej informacji, zobacz Pierwszeństwo typu danych.
Remarks
Jeśli wynik łączenia ciągów przekracza limit 8000 bajtów, wynik zostanie obcięty. Jeśli jednak co najmniej jeden ze połączonych ciągów jest dużym typem wartości, obcięcie nie występuje.
Ciągi i znaki o zerowej długości
Operator +
łączenia ciągów działa inaczej, gdy działa z pustym ciągiem o zerowej długości niż w przypadku pracy z wartościami lub nieznanymi wartościami NULL
. Ciąg znaków o zerowej długości można określić jako dwa pojedyncze znaki cudzysłowu bez żadnych znaków wewnątrz cudzysłowu. Ciąg binarny o zerowej długości można określić jako 0x
bez żadnych wartości bajtów określonych w stałej szesnastkowej. Łączenie ciągu o zerowej długości zawsze łączy dwa określone ciągi.
Łączenie wartości NULL
Podczas pracy z ciągami z wartością NULL
wynik łączenia zależy od ustawień sesji. Podobnie jak w przypadku operacji arytmetycznych wykonywanych na NULL
wartościach, gdy NULL
wartość jest dodawana do znanej wartości, wynik jest zazwyczaj nieznaną wartością, operacja łączenia ciągów wykonywana z wartością NULL
powinna również spowodować wynik NULL
.
Można jednak zmienić to zachowanie, zmieniając ustawienie CONCAT_NULL_YIELDS_NULL
dla bieżącej sesji. Aby uzyskać więcej informacji, zobacz SET CONCAT_NULL_YIELDS_NULL.
Korzystanie z rzutowania i konwertowania w razie potrzeby
Jawna konwersja na dane znaków musi być używana podczas łączenia ciągów binarnych i wszystkich znaków między ciągami binarnymi.
W poniższych przykładach pokazano, kiedy CONVERT
, lub CAST
, muszą być używane z łączeniem binarnym, a gdy CONVERT
lub CAST
, nie trzeba używać.
W tym przykładzie nie jest wymagana żadna funkcja CONVERT
ani CAST
, ponieważ ten przykład łączy dwa ciągi binarne.
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;
W tym przykładzie wymagana jest funkcja CONVERT
lub CAST
, ponieważ ten przykład łączy dwa ciągi binarne i spację.
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
Przykłady kodu w tym artykule korzystają z przykładowej bazy danych AdventureWorks2022
lub AdventureWorksDW2022
, którą można pobrać ze strony głównej Przykładów programu Microsoft SQL Server i projektów społeczności.
A. Używanie łączenia ciągów
Poniższy przykład tworzy pojedynczą kolumnę pod nagłówkiem Name
kolumny z wielu kolumn znaków z nazwą rodziny osoby, po której następuje przecinek, pojedyncza spacja, a następnie imię osoby. Zestaw wyników jest w kolejności rosnącej, alfabetycznej według nazwy rodziny, a następnie według imienia.
SELECT (LastName + ', ' + FirstName) AS Name
FROM Person.Person
ORDER BY LastName ASC, FirstName ASC;
B. Łączenie typów danych liczbowych i dat
W poniższym przykładzie użyto funkcji CONVERT
do łączenia liczbowych i typów danych daty.
SELECT 'The order is due on ' + CONVERT(VARCHAR(12), DueDate, 101)
FROM Sales.SalesOrderHeader
WHERE SalesOrderID = 50001;
GO
Oto zestaw wyników.
------------------------------------------------
The order is due on 04/23/2007
C. Używanie łączenia wielu ciągów
Poniższy przykład łączy wiele ciągów w celu utworzenia jednego długiego ciągu w celu wyświetlenia nazwy rodziny i pierwszego inicjała wiceprezesów w Adventure Works Cycles. Przecinek jest dodawany po nazwie rodziny i kropki po pierwszym inicjały.
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
Oto zestaw wyników.
Name Title
------------- ---------------`
Duffy, T. Vice President of Engineering
Hamilton, J. Vice President of Production
Welcker, B. Vice President of Sales
D. Używanie dużych ciągów w łączenia
Poniższy przykład łączy wiele ciągów w celu utworzenia jednego długiego ciągu, a następnie próbuje obliczyć długość końcowego ciągu. Końcowa długość zestawu wyników wynosi 16 000, ponieważ ocena wyrażeń zaczyna się od lewej, czyli @x
+ @z
+ @y
=> (@x + @z
) + @y
. W tym przypadku wynik (@x
+ @z
) jest obcięty na 8000 bajtów, a następnie @y
jest dodawany do zestawu wyników, co sprawia, że końcowa długość ciągu wynosi 16 000. Ponieważ @y
jest ciągiem typu dużej wartości, obcięcie nie występuje.
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
Oto zestaw wyników.
y
-------
16000
Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)
Przykłady kodu w tym artykule korzystają z przykładowej bazy danych AdventureWorks2022
lub AdventureWorksDW2022
, którą można pobrać ze strony głównej Przykładów programu Microsoft SQL Server i projektów społeczności.
E. Używanie łączenia wielu ciągów
Poniższy przykład łączy wiele ciągów w celu utworzenia jednego długiego ciągu w celu wyświetlenia nazwy rodziny i pierwszego inicjałów wiceprezesów w przykładowej bazie danych. Przecinek jest dodawany po nazwie rodziny i kropki po pierwszym inicjały.
SELECT (LastName + ', ' + SUBSTRING(FirstName, 1, 1) + '.') AS Name, Title
FROM DimEmployee
WHERE Title LIKE '%Vice Pres%'
ORDER BY LastName ASC;
Oto zestaw wyników.
Name Title
------------- ---------------
Duffy, T. Vice President of Engineering
Hamilton, J. Vice President of Production
Welcker, B. Vice President of Sales
Related content
- || (Łączenie ciągów) (Transact-SQL)
- += (przypisanie łączenia ciągów) (Transact-SQL)
- ALTER DATABASE (Transact-SQL)
- RZUTOWANIE i konwertowanie (Transact-SQL)
- konwersja typu danych (aparat bazy danych)
- Typy danych (Transact-SQL)
- Expressions (Transact-SQL)
- Wbudowane funkcje (Transact-SQL)
- Operators (Transact-SQL)
- SELECT (Transact-SQL)
- INSTRUKCJE SET (Transact-SQL)