VARCHAR スカラー関数

VARCHAR 関数は、最初の引数で指定された値の可変長文字ストリング表現を戻します。

VARCHAR 関数の構文は、入力引数のデータ・タイプによって異なります。 次のタイプの入力引数が受け入れられます。

整数から可変長文字:

構文図を読むビジュアルシンタックスダイアグラムをスキップするVARCHAR( 整数式)

10 進数から可変長文字:

構文図を読むビジュアルシンタックスダイアグラムをスキップするVARCHAR( 小数式,十進文字)

浮動小数点から可変長文字:

構文図を読むビジュアルシンタックスダイアグラムをスキップするVARCHAR( 浮動小数点演算式)

10 進浮動小数点から可変長文字:

構文図を読むビジュアルシンタックスダイアグラムをスキップするVARCHAR( 十進浮動小数点表現)

文字から可変長文字:

構文図を読むビジュアルシンタックスダイアグラムをスキップするVARCHAR( character-expression,整数,CODEUNITS16CODEUNITS32OCTETS)

グラフィックから可変長文字:

構文図を読むビジュアルシンタックスダイアグラムをスキップするVARCHAR( グラフィック表現,整数,CODEUNITS16CODEUNITS32)

日時から可変長文字:

構文図を読むビジュアルシンタックスダイアグラムをスキップするVARCHAR( 日時表現)

行 ID から可変長文字:

構文図を読むビジュアルシンタックスダイアグラムをスキップするVARCHAR( 行ID式)

スキーマは SYSIBM です。

VARCHAR 関数は、以下のいずれかの値の可変長文字ストリング表現を戻します。

  • 整数 (最初の引数が SMALLINT、INTEGER、または BIGINT の場合)
  • 最初の引数が 10 進数である場合は 10 進数
  • 倍精度浮動小数点数 (最初の引数が DOUBLE または REAL の場合)
  • 最初の引数が DECFLOAT である場合は 10 進浮動小数点数。
  • 文字ストリング値 (最初の引数がいずれかのタイプの文字ストリングの場合)
  • グラフィック・ストリング (最初の引数が EBCDIC または Unicode グラフィック・ストリングの場合)
  • 最初の引数が日付、時刻、またはタイム・スタンプである場合は日時値
  • 最初の引数が行 ID である場合は行 ID 値

この関数の結果は、可変長文字ストリング (VARCHAR) です。

結果は NULL になる可能性があります。第 1 引数が NULL の場合、結果は NULL 値となります。

整数から可変長文字
整数式
組み込み整数データ・タイプ (SMALLINT、INTEGER、) の値を戻す式。

結果は、SQL 整数定数の形式による引数の可変長文字ストリング表現になります。 結果の実際の長さは、引数の値を表すために使用できる最小の文字数です。 結果は、引数の値を表す n 文字の有効数字から成ります。引数が負数の場合は、負符号が前に付きます。 正の値は数字で始まります。 これに先行ゼロは含まれません。

  • 引数が短整数の場合は、結果の長さ属性は 6
  • 引数が長整数の場合は、結果の長さ属性は 11
  • 引数が 64 ビット整数の場合は、結果の長さ属性は 20

変更の開始結果のCCSIDは、 文字列のエンコード・スキームとCCSIDのルールの説明に従って決定される。変更の終わり

10 進数から可変長文字
小数式
組み込み 10 進データ・タイプの値を戻す式。 式の値に別の精度と位取りを指定するには、VARCHAR 関数を適用する前に DECIMAL 関数を式に適用します。
十進文字
結果文字ストリングの中で 10 進数を区切るために使用する 1 バイト文字定数を指定します。 この文字は数字、正符号 (+)、 負符号 (-)、またはブランクであってはなりません。 デフォルトはピリオド(.)またはカンマ(,)です。選択を決定する要因に関する詳細は、 小数点の表記をご覧ください。

結果は、最初の引数の可変長文字ストリング表現になります。 結果の実際の長さは、後続ゼロが含まれている場合を除いて、結果を表すために使用できる最小の文字数です。 この結果には、1 文字の小数点文字と p 桁までの数字が含まれます。 pdecimal-expression の精度で、引数が負数の場合は負符号が先頭に付きます。 正の値は、数字または decimal-character で始まります。 先行ゼロは返されません。 10 進数式の位取りがゼロの場合、小数点文字は戻されません。

結果の長さ属性は 2+p (pdecimal-expression の精度) です。

1

変更の開始結果の CCSID は、アプリケーションのコード化スキームから決定されます。変更の終わり

浮動小数点数から可変長文字に
浮動小数点演算式
組み込み浮動小数点データ・タイプの値を戻す式。

結果は、SQL 浮動小数点定数の形式による引数の可変長文字ストリング表現になります。 結果の最初の文字は、引数が負であれば、負符号となります。負でなければ、 最初の文字は数字です。 引数がゼロであると、結果は 0E0 になります。

結果の長さ属性は 24 バイトです。 結果の実際の長さは、引数の値を表すことができる最少数の文字 (例えば、 ゼロ以外の単一の数字の後に続くピリオドと一連の数字からなる仮数) です。

変更の開始結果のCCSIDは、 文字列のエンコード・スキームとCCSIDのルールの説明に従って決定される。変更の終わり

10 進浮動小数点数から可変長文字
十進浮動小数点表現
組み込み DECFLOAT データ・タイプの値を戻す式。

結果は SQL 10 進浮動小数点定数形式の引数の可変長文字ストリング表現です。

結果値が特殊値 Infinity、sNaN、または NaN のいずれかである場合、ストリング「INFINITY」、「SNAN」、または「NAN」がそれぞれ返されます。 DECFLOAT 特殊値 sNaN は、ストリングに変換される場合には、例外の原因となりません。

結果の長さ属性は 42 文字です。 結果の実際の長さは、引数の値 (符号、数字、およびピリオドを含む) を表す文字の最小数です。 後続ゼロは有効数字です。 引数が負である場合、結果の先頭の文字は負符号 (-) になります。 それ以外の場合、先頭文字は数字、または結果値が Infinity、sNaN、または NaN の場合は文字です。

変更の開始結果のCCSIDは、 文字列のエンコード・スキームとCCSIDのルールの説明に従って決定される。変更の終わり

文字から可変長文字
文字表現
組み込み文字データ・タイプの値を戻す式。
整数
結果として得られる可変長文字ストリングの長さ属性を指定します。 値は1から 32764 までの間でなければならず、暗黙的または明示的に指定された単位で表さなければなりません。 長さを指定しない場合、結果の長さは character-expression の長さと 同じです。

CODEUNITS16、 CODEUNITS32、または OCTETS が指定されている場合、結果文字列の長さ属性を計算する方法については、「最終結果の長さ属性の決定」を参照してください。

長さ属性が無指定で、character-expression が空ストリング定 数の場合、結果の長さ属性は 1 であり、結果は空ストリングです。 それ以外は、結果の長さ属性は、最初の引数の長さ属性と同じです。

CODEUNITS16、CODEUNITS32、または OCTETS
integer を表すのに使用する単位を指定します。 character-expression がビット・データとして定義された文字ストリング の場合は、CODEUNITS16 および CODEUNITS32 は指定できません。
CODEUNITS16
integer が、16 ビットの UTF-16 コード単位の形で表現されるこ とを指定します。
CODEUNITS32
integer が、32 ビットの UTF-32 コード単位の形で表現されるこ とを指定します。
OCTETS
integer が、バイトの形で表現されることを指定します。
CODEUNITS16、 CODEUNITS32、OCTETSの詳細については、「文字列単位仕様」 を参照してください。

結果の実際の長さは、結果の長さ属性と character-expression の実際の長さのうち、小さい方になります。 character-expression の長さが結果の長さ属性より長い場合、 結果は切り捨てられます。 切り捨てられたすべての文字が character-expression の場合に妥当な ブランクでない場合は、警告が戻されます。

character-expression がビット・データである場合、結果はビット・データ になります。 それ以外の場合、 結果の CCSID は character-expression の CCSID と同じです。

グラフィックから可変長文字
グラフィック表現
組み込みグラフィック・データ・タイプの値を戻す式。
整数
結果として得られる可変長グラフィック・ストリングの長さ属性。 値は、暗黙的または明示的に指定された単位で、1~32704 の範囲でなければなりません。

CODEUNITS16 または CODEUNITS32 が指定されている場合、結果文字列の長さ属性を計算する方法については、「最終結果の長さ属性の決定」を参照してください。

長さ属性が無指定の場合、結果の長さ属性は次のよう に決められます (ここで n は、最初の引数の長さ属性)。

  • graphic-expression が空のグラフィック・ストリング定数の場合、 結果の長さ属性は 1 です。
  • 結果が SBCS データの場合、結果の長さは n です。
  • 結果が混合データの場合、結果の長さは 3*(length(graphic-expression)です。
CODEUNITS16 または CODEUNITS32
integer を表すのに使用する単位を指定します。
CODEUNITS16
integer が、16 ビットの UTF-16 コード単位の形で表現されるこ とを指定します。
CODEUNITS32
integer が、32 ビットの UTF-32 コード単位の形で表現されるこ とを指定します。
CODEUNITS16 または CODEUNITS32 に関する詳細情報については、 文字列単位の仕様を参照してください。

結果の実際の長さは、結果の長さ属性と graphic-expression の実際の長さのうち、小さい方になります。 graphic-expression の長さが結果の長さ属性より長い場合、結果は切り捨てられます。 切り捨てられたすべての文字が graphic-expression に妥当な ブランクである場合を除き、警告が戻されます。

結果の CCSID は、graphic-expression のグラフィック CCSID に対応する文字混合 CCSID です。

日時から可変長文字
日時表現
以下の 3 つのうちのいずれかの組み込みデータ・タイプの値を持つ式。
日付
結果は、DATE プリコンパイラー・オプションがあればこれによって、なければ インストール・パネル DSNTIP4 のフィールド DATE FORMAT によって指定された形式の、日付の 可変長文字ストリング表現です。 LOCAL 形式を使用する場合、結果の長さは、 インストール・パネル DSNTIP4 のフィールド LOCAL DATE LENGTH で指定されます。 これ以外の 場合、結果の長さ属性と実際の長さは 10 になります。

LOCALは、SQLステートメントを実行する Db2 のローカルフォーマットを示します。 フォーマットにLOCALが使用されている場合、タイム終了ルーチンをその Db2 にインストールする必要があります。

2 番目の引数を指定し、それが無効な値である場合、エラーが発生します。

時刻
結果は、TIME プリコンパイラー・オプションがあればこれによって、なければ インストール・パネル DSNTIP4 のフィールド TIME FORMAT によって指定された形式の、時刻の 可変長文字ストリング表現です。 LOCAL 形式を使用する場合、結果の長さは、 インストール・パネル DSNTIP4 のフィールド LOCAL TIME LENGTH で指定されます。 これ以外の 場合、結果の長さ属性と実際の長さは 8 になります。

LOCALは、SQLステートメントを実行する Db2 のローカルフォーマットを示します。 フォーマットにLOCALが使用されている場合、タイム終了ルーチンをその Db2 にインストールする必要があります。

2 番目の引数を指定し、それが無効な値である場合、エラーが発生します。

タイムスタンプ
結果は、タイム・ゾーン付きのタイム・スタンプの文字ストリング表現です。 2 番目の引数を指定してはいけません。
  • datetime-expression が TIMESTAMP (0) WITHOUT TIME ZONE である場合、結果の長さは 19 になります。
  • datetime-expression が TIMESTAMP (p) WITHOUT TIME ZONE である場合、結果の長さは 20+p (p はタイム・スタンプ精度) になります。 2 番目の引数を指定してはいけません。
  • datetime-expression が TIMESTAMP(0) WITH TIME ZONE である場合、結果の長さは 25 になります。
  • datetime-expression が TIMESTAMP (p) WITH TIME ZONE である場合、結果の長さは 26 +p (p はタイム・スタンプ精度) になります。 2 番目の引数を指定してはいけません。

結果の CCSID は、関数が呼び出されたコンテキストによって決まります。 詳細については、 文字列のエンコード・スキームとCCSIDルールを参照のこと。

行 ID から可変長文字
行ID式
組み込み行 ID データ・タイプの値を戻す式。

結果は引数の可変長文字ストリング表現 (VARCHAR) です。 これはビット・データです。

結果の長さ属性は 40 バイトです。 結果の実際の長さは 、row-ID-expression の長さです。

構文の選択肢VARCHAR9 VARCHARの代替として指定することができます。 最初の引数が 10 進データである点を除き、関数の結果は同じです。

例 1: ホスト変数 JOB_DESC が VARCHAR(8) として定義されているとします。 サンプルテーブル DSN8C10.EMP を使用して、名字が「QUINTANA」の従業員のジョブ記述(CHAR(8)として定義されたJOB列)に相当する可変長文字列をJOB_DESC に設定します。
   SELECT VARCHAR(JOB)
     INTO :JOB_DESC
     FROM DSN8C10.EMP
     WHERE LASTNAME = 'QUINTANA';
例 2: FIRSTNME は Unicode 表 T1 内の VARGRAPHIC(6) の列です。 その値の 1 つは、ストリング「Jürgen」(X'004A00FC007200670055006E') です。 これが FIRSTNME の値の場合、
   Function ...                           Returns ...
   ----------------------------------------------------------
   VARCHAR(FIRSTNME,3,CODEUNITS32)        'Jür'  -- x'4AC3BC72'
   VARCHAR(FIRSTNME,3,CODEUNITS16)        'Jür'  -- x'4AC3BC72'
   VARCHAR(FIRSTNME,3,OCTETS)             'Jü'   -- x'4AC3BC' 
1 BIF_COMPATIBILITY システムパラメータが V9_DECIMAL_VARCHAR に設定されている場合、または SYSCOMPAT_V9.VARCHAR 関数が使用されている場合、結果の形式は VARCHAR9 小数入力の関数の結果と一致します。