Hitachi

ノンストップデータベース HiRDB Version 10 SQLリファレンス


2.13.1 連結演算の形式と規則

〈この項の構成〉

(1) 機能

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

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

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

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

第1演算項のデータ型

第2演算項のデータ型

文字データ

各国文字データ

混在文字データ

バイナリデータ

CHAR

VARCHAR

NCHAR

NVARCHAR

MCHAR

MVARCHAR

BINARY

文字データ

CHAR

CHAR※1

VARCHAR

×

×

MCHAR※1

MVARCHAR

×

VARCHAR

VARCHAR

VARCHAR

×

×

MVARCHAR

MVARCHAR

BINARY※2

各国文字データ

NCHAR

×

×

NCHAR※1

NVARCHAR

×

×

×

NVARCHAR

×

×

NVARCHAR

NVARCHAR

×

×

×

混在文字データ

MCHAR

MCHAR※1

MVARCHAR

×

×

MCHAR※1

MVARCHAR

×

MVARCHAR

MVARCHAR

MVARCHAR

×

×

MVARCHAR

MVARCHAR

×

バイナリデータ

BINARY

×

BINARY※2

×

×

×

×

BINARY

数データ※3※4

INTEGER,SMALLINT,及びDECIMAL

VARCHAR

VARCHAR

×

×

MVARCHAR

MVARCHAR

×

FLOAT,及びSMALLFLT

CHAR※1

VARCHAR

×

×

MCHAR※1

MVARCHAR

×

(凡例)

×:指定できません。

注※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,及びDECIMAL

FLOAT,及びSMALLFLT

文字データ

CHAR

VARCHAR

CHAR※1

VARCHAR

VARCHAR

VARCHAR

各国文字データ

NCHAR

×

×

NVARCHAR

×

×

混在文字データ

MCHAR

MVARCHAR

MCHAR※1

MVARCHAR

MVARCHAR

MVARCHAR

バイナリデータ

BINARY

×

×

数データ※2

INTEGER,SMALLINT,及びDECIMAL

VARCHAR

VARCHAR

FLOAT,及びSMALLFLT

VARCHAR

CHAR※1

(凡例)

×:指定できません。

注※1

表「連結できるデータ型と演算結果のデータ型(1/2)」の注※1を参照してください。

注※2

表「連結できるデータ型と演算結果のデータ型(1/2)」の注※3を参照してください。

注※3

表「連結できるデータ型と演算結果のデータ型(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) 規則

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

  1. 連結演算の演算項に,埋込み変数,又は?パラメタを直接指定できません。

  2. 連結演算の演算項に,予備列を指定できません。

  3. 演算結果は,一次子,又は値式の非ナル値制約の有無に関係なく,ナル値を許します。

  4. 連結演算の結果のデータ長(最大長)が可変長データの最大長を超えた場合はエラーになります。

  5. 連結演算の結果のデータ型がBINARY型の場合,結果のデータ長(最大長)が32,000バイトを超えるときは,UPDATE文のSET句以外ではエラーになります。

  6. 文字集合が異なる場合,文字データ同士の連結として連結できません。ただし,次に示す値式は,連結相手の文字集合に変換して連結できます。

    • 文字列定数