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

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

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

構文

expression + expression

引数

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

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

    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
    -- 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 AdventureWorks2012;
GO
SELECT (LastName + ', ' + FirstName) AS Name
FROM Person.Person
ORDER BY LastName ASC, FirstName ASC;

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

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

USE AdventureWorks2012;
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/2007

(1 row(s) affected)

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

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

USE AdventureWorks2012;
GO
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

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

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)

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

概念

データ型の変換 (データベース エンジン)