2.13 連結演算

<この節の構成>
(1) 機能
(2) 形式
(3) 規則

(1) 機能

値式中に連結演算を指定すると,複数のデータ列(文字列又はバイナリ列)を指定した順に連結して一つのデータ列にします。

BLOB型,又は最大長が32,001バイト以上のBINARY型の連結演算は,UPDATE文のSET句の更新値にだけ指定できます。BLOB型,又は定義長が32,001バイト以上のBINARY型の連結演算については,「4. UPDATE文 形式1(データ更新)」の「連結演算を使用してBLOB型,又は定義長が32,001バイト以上のBINARY型の列を更新する場合の規則」を参照してください。形式は,文字列データの連結演算と同じです。

文字列データ,及び最大長が32,000バイト以下のBINARY型データの連結演算について,連結できるデータ型と演算結果のデータ型を次の表に示します。

表2-21 連結できるデータ型と演算結果のデータ型(1/2)

第1演算項のデータ型第2演算項のデータ型
文字データ各国文字データ混在文字データバイナリデータ
CHARVARCHARNCHARNVARCHARMCHARMVARCHARBINARY
文字データCHARCHAR※1VARCHAR××MCHAR※1MVARCHAR×
VARCHARVARCHARVARCHAR××MVARCHARMVARCHARBINARY※2
各国文字データNCHAR××NCHAR※1NVARCHAR×××
NVARCHAR××NVARCHARNVARCHAR×××
混在文字データMCHARMCHAR※1MVARCHAR××MCHAR※1MVARCHAR×
MVARCHARMVARCHARMVARCHAR××MVARCHARMVARCHAR×
バイナリデータBINARY×BINARY※2××××BINARY
数データ※3※4INTEGER,SMALLINT,及びDECIMALVARCHARVARCHAR××MVARCHARMVARCHAR×
FLOAT,及びSMALLFLTCHAR※1VARCHAR××MCHAR※1MVARCHAR×
(凡例)
×:指定できません。
注※1
連結後の長さがCHAR,NCHAR,又はMCHARの最大長を超える場合,VARCHAR,NVARCHAR,又はMVARCHARになります。
注※2
BINARY型には,16進文字列定数だけ演算項に指定できます。
注※3
数データは次のように変換されます。
  • INTEGER型の数データは,VARCHAR(11)の文字データに変換されます。
  • SMALLINT型の数データは,VARCHAR(6)の文字データに変換されます。
  • DECIMAL(p,0)型の数データは,VARCHAR(p+1)の文字データに変換されます。
  • DECIMAL(p,s)型の数データは,VARCHAR(p+2)の文字データに変換されます。
  • FLOAT型又はSMALLFLT型の数データは,CHAR(23)の文字データに変換されます。
注※4
数データを連結する場合,数データは次のように変換されます。
  • 数データと文字データの連結の場合,数データは文字データの文字集合に変換されます。
  • 数データと混在文字データの連結の場合,数データは混在文字データに変換されます。
  • 数データと数データの連結の場合,数データは既定文字集合に変換されます。

    表2-22 連結できるデータ型と演算結果のデータ型(2/2)

    第1演算項のデータ型第2演算項のデータ型
    数データ※2※3
    INTEGER,SMALLINT,及びDECIMALFLOAT,及びSMALLFLT
    文字データCHARVARCHARCHAR※1
    VARCHARVARCHARVARCHAR
    各国文字データNCHAR××
    NVARCHAR××
    混在文字データMCHARMVARCHARMCHAR※1
    MVARCHARMVARCHARMVARCHAR
    バイナリデータBINARY××
    数データ※2INTEGER,SMALLINT,及びDECIMALVARCHARVARCHAR
    FLOAT,及びSMALLFLTVARCHARCHAR※1
(凡例)
×:指定できません。
注※1
表2-21 連結できるデータ型と演算結果のデータ型(1/2)」の注※1を参照してください。
注※2
表2-21 連結できるデータ型と演算結果のデータ型(1/2)」の注※3を参照してください。
注※3
表2-21 連結できるデータ型と演算結果のデータ型(1/2)」の注※4を参照してください。

演算結果のデータ長を次の表に示します。

表2-23 連結演算の結果のデータ長

演算結果のデータ型データ長(可変長データの場合,最大長)
CHAR(n)n=n1+n2(ただし,n>255の場合,結果のデータ型はVARCHAR)
VARCHAR(n)n=n1+n2(ただし,n>32,000の場合はエラー)
NCHAR(n)n=n1+n2(ただし,n>127の場合,結果のデータ型はNVARCHAR)
NVARCHAR(n)n=n1+n2(ただし,n>16,000の場合はエラー)
MCHAR(n)n=n1+n2(ただし,n>255の場合,結果のデータ型はMVARCHAR)
MVARCHAR(n)n=n1+n2(ただし,n>32,000の場合はエラー)
BINARY(n)n=n1+n2(ただし,n>32,000の場合,UPDATE文のSET句以外ではエラー)
(凡例)
n1:第1演算項のデータ長
n2:第2演算項のデータ長
注1
nは,演算結果のデータ型がCHAR,VARCHAR,MCHAR,MVARCHAR,及びBINARYの場合はバイト数を,NCHAR,及びNVARCHARの場合は文字数を示します。
注2
第1演算項,又は第2演算項が長さ0の文字列定数(各国,及び混在を含む)の場合,n1,又はn2を0としてください。ただし,すべての連結演算の結果データ長が0の場合,nは1になります。

(2) 形式

 値式||一次子

(3) 規則

文字列データの連結演算をする場合は,「2.9 値式,値指定,及び項目指定」の共通規則にも従ってください。

  1. 連結演算の演算項に,埋込み変数,又は?パラメタを直接指定できません。
  2. 演算結果は,一次子,又は値式の非ナル値制約の有無に関係なく,ナル値を許します。
  3. 連結演算の結果のデータ長(最大長)が可変長データの最大長を超えた場合はエラーになります。
  4. 連結演算の結果のデータ型がBINARY型の場合,結果のデータ長(最大長)が32,000バイトを超えるときは,UPDATE文のSET句以外ではエラーになります。
  5. 文字集合が異なる場合,文字データ同士の連結として連結できません。ただし,次に示す値式は,連結相手の文字集合に変換して連結できます。
    • 文字列定数