+ (文字列連結) (Transact-SQL)

文字列式の中の演算子であり、2 つ以上の文字列やバイナリ文字列、列、文字列と列名の組み合わせを 1 つの式に連結します (文字列演算子)。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

expression + expression

引数

expression

文字型およびバイナリ型に分類される任意のデータ型を持つ有効なです。ただし、image 型、ntext 型、および text 型は除きます。両方の式は、同じデータ型でなければなりません。または、一方の式をもう一方の式のデータ型に暗黙的に変換できる必要があります。

2 つのバイナリ間にある任意の文字列を、その両端にあるバイナリ文字列と結合する場合、文字データへの明示的な変換を使用する必要があります。次の例では、バイナリ連結で CONVERT または CAST を使用する必要がある場合と、CONVERT または CAST を使用する必要がない場合を示します。

DECLARE @mybin1 binary(5), @mybin2 binary(5)
SET @mybin1 = 0xFF
SET @mybin2 = 0xA5
-- No CONVERT or CAST function is required because this example 
-- concatenates two binary strings.
SELECT @mybin1 + @mybin2
-- 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))

戻り値の型

優先順位が最も高い引数のデータ型を返します。詳細については、「データ型の優先順位 (Transact-SQL)」を参照してください。

解説

+ (文字列連結) 演算子は、長さがゼロの空の文字列に対して使用するときと、NULL、または不明な値に対して使用するときでは、動作が異なります。長さがゼロの文字列は、間に文字を挟まない 2 つの単一引用符で指定できます。長さがゼロのバイナリ文字列は、16 進定数で指定したバイト値を持たない 0x で指定できます。長さがゼロの文字列の連結では、常に 2 つの指定された文字列を連結します。NULL 値の文字列を操作した場合、連結の結果はセッションの設定によって決まります。NULL 値に対して実行される算術演算の場合、既知の値に NULL 値を追加すると、結果は通常、不明な値になります。同様に、NULL 値に対して実行される文字列連結演算でも、NULL の結果を生成する必要があります。ただし、現在のセッションの CONCAT_NULL_YIELDS_NULL の設定を変更することにより、この動作を変更できます。詳細については、「SET CONCAT_NULL_YIELDS_NULL (Transact-SQL)」を参照してください。

文字列の連結の結果が 8,000 バイトを超える場合、結果は切り捨てられます。ただし、連結する文字列の少なくとも一方が大きな値の型の場合、切り捨ては行われません。

A. 文字列連結を使用する

次の例では、複数の文字の列から、Name という列見出しで単一の列を作成します。連絡先の姓に、コンマとスペース 1 つを連結し、さらに連絡先の名を連結します。結果セットは、姓、名の順で昇順に表示されます。

USE AdventureWorks;
GO
SELECT (LastName + ', ' + FirstName) AS Name
FROM Person.Contact
ORDER BY LastName ASC, FirstName ASC;

B. 数値型と日付型を結合する

次の例では、CONVERT 関数を使用して、numeric 型と date 型を連結します。

USE AdventureWorks;
GO
SELECT 'The order is due on ' + CONVERT(varchar(12), DueDate, 101)
FROM Sales.SalesOrderHeader
WHERE SalesOrderID = 50001;
GO

以下に結果セットを示します。 

------------------------------------------------ 
The order is due on 04/23/2003            

(1 row(s) affected)

C. 複数の文字列の連結を使用する

次の例では、複数の文字列を連結して 1 つの長い文字列を形成し、Adventure Works Cycles の副社長の姓と、名のイニシャルを表示します。姓の後ろにコンマを追加し、名のイニシャルの後ろにピリオドを追加します。

USE AdventureWorks;
GO
SELECT (LastName + ',' + SPACE(1) + SUBSTRING(FirstName, 1, 1) + '.') AS Name, e.Title
FROM Person.Contact AS c
    JOIN HumanResources.Employee AS e
    ON c.ContactID = e.ContactID
WHERE e.Title LIKE 'Vice%'
ORDER BY LastName ASC;
GO

以下に結果セットを示します。 

Name               Title                                         
-------------      ---------------
Duffy, T.         Vice President of Engineering
Hamilton, J.      Vice President of Production
Welcker, B.       Vice President of Sales
(3 row(s) affected)

参照

関連項目

ALTER DATABASE (Transact-SQL)
CAST および CONVERT (Transact-SQL)
データ型 (Transact-SQL)
式 (Transact-SQL)
関数 (Transact-SQL)
演算子 (Transact-SQL)
SELECT (Transact-SQL)
SET (Transact-SQL)

その他の技術情報

データ型の変換 (データベース エンジン)
データベース オプションの設定

ヘルプおよび情報

SQL Server 2005 の参考資料の入手