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型データの連結演算について,連結できるデータ型と演算結果のデータ型を次の表に示します。
第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
-
数データを連結する場合,数データは次のように変換されます。
-
数データと文字データの連結の場合,数データは文字データの文字集合に変換されます。
-
数データと混在文字データの連結の場合,数データは混在文字データに変換されます。
-
数データと数データの連結の場合,数データは既定文字集合に変換されます。
-
第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を参照してください。
演算結果のデータ長を次の表に示します。
演算結果のデータ型 |
データ長(可変長データの場合,最大長) |
---|---|
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) 規則
文字列データの連結演算をする場合は,「値式,値指定,及び項目指定」の共通規則にも従ってください。
-
連結演算の演算項に,埋込み変数,又は?パラメタを直接指定できません。
-
連結演算の演算項に,予備列を指定できません。
-
演算結果は,一次子,又は値式の非ナル値制約の有無に関係なく,ナル値を許します。
-
連結演算の結果のデータ長(最大長)が可変長データの最大長を超えた場合はエラーになります。
-
連結演算の結果のデータ型がBINARY型の場合,結果のデータ長(最大長)が32,000バイトを超えるときは,UPDATE文のSET句以外ではエラーになります。
-
文字集合が異なる場合,文字データ同士の連結として連結できません。ただし,次に示す値式は,連結相手の文字集合に変換して連結できます。
-
文字列定数
-