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

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

2.25 CAST指定

<この節の構成>
(1) 機能
(2) 形式
(3) 規則
(4) 結果のデータ型ごとの変換規則

(1) 機能

値式のデータを,指定したデータ型に変換します。

(2) 形式

 
 CAST指定::=CAST({値式|NULL} AS データ型)
 

(3) 規則

  1. 値式には,次のデータ型は指定できません。
    • BLOB
    • 定義長が32,001バイト以上のBINARY
    • 抽象データ型
  2. AS データ型には,次のデータ型は指定できません。
    • BLOB
      ただし,CAST(NULL AS BLOB)は指定できます。
    • 長さが32,001バイト以上のBINARY
      ただし,CAST(NULL AS BINARY(n))は指定できます。nは32,001以上のバイト数です。
    • BOOLEAN
    • 抽象データ型
  3. 結果の値は,非ナル値制約なし(ナル値を許します)になります。
  4. 値式にNULLを指定するか,又は値式の結果がナル値の場合,結果の値はナル値になります。
  5. 実長0バイト,又は実長0文字のデータを値式に指定した場合,文字型への変換はデータ変換の規則に従います。文字型以外への変換では,エラーになります。
  6. 値式に埋込み変数又は?パラメタを単独で指定した場合,埋込み変数又は?パラメタのデータ型は,AS データ型に指定したデータ型が仮定されます。
  7. 値式に繰返し列を指定する場合,添字を指定してください。ただし,添字にANYは指定できません。
  8. AS データ型には,値式に指定するデータ型と型変換できるデータ型を指定してください。データ型の変換可否を次の表に示します。

    表2-106 値式の結果のデータ型とAS データ型との,データ型の変換可否(1/2)

    値式の結果のデータ型 AS データ型
    数データ 文字データ(文字集合) 各国文字データ 混在文字データ
    真数 概数
    INTEGER,SMALLINT,DECIMAL FLOAT,SMALLFLT CHAR,VARCHAR NCHAR,NVARCHAR MCHAR,MVARCHAR
    DF EK U16
    数データ 真数 INTEGER,SMALLINT,DECIMAL ×
    概数 FLOAT,SMALLFLT ×
    文字データ(文字集合) CHAR,VARCHAR(DF) ※2 ×
    CHAR,VARCHAR(EK) ※2 × × ×
    CHAR,VARCHAR(U16) × ×
    各国文字データ NCHAR,NVARCHAR × × × × × ×
    混在文字データ MCHAR,MVARCHAR × ×
    論理データ BOOLEAN × × ×
    日付データ DATE × ×
    ※1

    ※1

    ※1
    × ※1
    時刻データ TIME × ×
    ※1

    ※1

    ※1
    × ※1
    時刻印データ TIMESTAMP × ×
    ※1

    ※1

    ※1
    × ※1
    日間隔データ INTERVAL YEAR TO DAY × × × × × ×
    時間隔データ INTERVAL HOUR TO SECOND × × × × × ×
    バイナリデータ BINARY × × × ×
    (凡例)
    ○:データ変換ができます。
    ×:データ変換ができません。
    DF:既定文字集合
    EK:EBCDIK
    U16:UTF16
    注※1
    AS データ型に指定した長さが,次に示す長さ以上の場合は変換できます。
    ・値式の結果の文字集合がUTF16以外の場合
    DATEの場合:
      10バイト
    TIMEの場合:
      8バイト
    TIMESTAMP(p)の場合:
      p=0のときは19バイト(ピリオドは付きません)
      p>0のときは20+↓(p+1)/2↓×2バイト
    ・値式の結果の文字集合がUTF16の場合
    DATEの場合:
      20バイト
    TIMEの場合:
      16バイト
    TIMESTAMP(p)の場合:
      p=0のときは38バイト(ピリオドは付きません)
      p>0のときは40+↓(p+1)/2↓×4バイト
    ASデータ型に指定した長さが,上記の長さより短い場合は変換できません。
    固定長の文字データ型に変換する場合で,ASデータ型に指定した長さが上記の長さより長い場合は,左詰めにして,末尾をその文字集合の空白で埋めます。
    注※2
    既定文字集合のSJISコードをJIS8コードの1バイトコードとみなして,JIS8コードとEBCDIKコードとの間の変換を行います。
    文字コード変換規則については,マニュアル「HiRDB Version 8 UAP開発ガイド」を参照してください。

    表2-107 値式の結果のデータ型とAS データ型との,データ型の変換可否(2/2)

    値式の結果のデータ型 AS データ型
    日付データ 時刻データ 時刻印データ 日間隔データ 時間隔データ バイナリデータ
    DATE TIME TIMESTAMP INTERVAL YEAR TO DAY INTERVAL HOUR TO SECOND BINARY
    数データ 真数 INTEGER,SMALLINT,DECIMAL × × × ×
    概数 FLOAT,SMALLFLT × × × × × ×
    文字データ CHAR,VARCHAR(DF) × ×
    CHAR,VARCHAR(EK) × ×
    CHAR,VARCHAR(U16) × ×
    各国文字データ NCHAR,NVARCHAR × × × × × ×
    混在文字データ MCHAR,MVARCHAR × × ×
    論理データ BOOLEAN × × × × × ×
    日付データ DATE × × × ×
    時刻データ TIME × × × ×
    時刻印データ TIMESTAMP × × ×
    日間隔データ INTERVAL YEAR TO DAY × × × ×
    時間隔データ INTERVAL HOUR TO SECOND × × × ×
    バイナリデータ BINARY × × × × ×
    (凡例)
    ○:データ変換ができます。
    ×:データ変換ができません。
    DF:既定文字集合
    EK:EBCDIK
    U16:UTF16
  9. ウィンドウ関数は指定できません。

(4) 結果のデータ型ごとの変換規則

(a) 数データ
(b) 文字データ,及び混在文字データ

注※
マルチバイト文字の途中で切り捨てが発生する場合,マルチバイト文字の一部分が結果の値として返されます。
(c) 各国文字データ
(d) 日付データ,時刻データ,及び時刻印データ
(e) 日間隔データ,及び時間隔データ
(f) バイナリデータ