スケーラブルデータベースサーバ HiRDB Version 8 SQLリファレンス

[目次][索引][前へ][次へ]

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演算項のデータ型
文字データ 各国文字データ 混在文字データ バイナリデータ
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
表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. 文字集合が異なる場合,文字データ同士の連結として連結できません。ただし,次に示す値式は,連結相手の文字集合に変換して連結できます。
    • 文字列定数