CHAR スカラー関数

CHAR 関数は、引数の固定長文字ストリング表示を戻します。

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

整数から文字:

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

10 進数から文字:

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

浮動小数点から文字:

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

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

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

文字から文字:

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

グラフィックから文字:

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

日時から文字:

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

行 ID から文字:

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

スキーマは SYSIBM です。

CHAR 関数は、以下のいずれかの値の固定長文字ストリング表示を戻します。

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

この関数の結果は固定長文字ストリング (CHAR) です。

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

整数から文字
整数式
組み込み整数データ・タイプ (SMALLINT、INTEGER、または BIGINT) の値を戻す式。

結果は SQL 整定数形式の引数の固定長文字ストリング表示です。 結果は、引数の値を表すために使用できる最小文字数で、ブランクが埋め込まれます。 結果は、引数の値を表す有効数字である n 文字で構成されます。引数が負の場合は、負符号 (-) が前に付きます。 正の値は数字で始まり、常に少なくとも 1 つの末尾ブランクを含みます。 これに先行ゼロは含まれません。 結果は左揃えされます。

  • 引数が短精度整数の場合、結果の長さは 6 です。 結果の文字数が 6 未満の場合は、結果の右側にブランクが埋め込まれます。
  • 引数が長精度整数の場合、結果の長さは 11 になります。結果の文字数が 11 未満の場合、結果の右側にブランクが埋め込まれます。
  • 引数が 64 ビット整数の場合、結果の長さは 20 です。 結果の文字数が 20 より少ない場合は、結果の右側にブランクが埋め込まれます。

正の値は常に 1 つの末尾ブランクを含みます。

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

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

結果は、最初の引数の固定長文字ストリング表現です。 結果は、引数の値を表すために使用できる最小文字数です。ただし、後続ゼロは含まれません。

この結果には、1 文字の小数点文字と p 桁までの数字が含まれます。pdecimal-expression の精度で、引数が負数の場合は負符号が先頭に付きます。 正の値は、数字または 10 進数で始まり、常に少なくとも 1 つの末尾ブランクを含みます。 先行ゼロは返されません。 decimal-expression の位取りがゼロの場合、小数点文字は戻されません。 結果のバイト数が定義された結果の長さよりも少ない場合、結果は右側に空白で埋められます。 1

結果の長さは 2 +p です。ここで、pdecimal-expression の精度です。

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

浮動小数点から文字
浮動小数点演算式
組み込み浮動小数点データ・タイプ (DOUBLE または REAL) の値を戻す式。

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

結果の長さは 24 文字です。 結果には、引数の値を表すことができる最小文字数が含まれます。小数部は、ゼロ以外の 1 桁の数字と、それに続くピリオドと数字のシーケンスで構成されます。

結果の文字数が 24 より少ない場合は、結果の右側にブランクが埋め込まれます。

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

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

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

結果値が Infinity、sNaN、または NaN の場合、ストリング「INFINITY」、「SNAN」、および「NAN」がそれぞれ返されます。 DECFLOAT 特殊値 sNaN は、ストリングへの変換時に例外になりません。

結果の長さは 42 です。 結果の文字数が 42 未満の場合は、結果の右側にブランクが埋め込まれます。 後続ゼロは有効数字です。 引数が負である場合、結果の先頭の文字は負符号 (-) になります。 それ以外の場合、先頭文字は数字、または結果値が Infinity、sNaN、または NaN の場合は文字です。

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

文字から文字
文字表現
組み込み文字ストリングの値を返す式。
整数
結果として得られる固定長文字ストリングの長さ属性。 値は、1~255の範囲の整数定数でなければなりません。

長さを指定しない場合、結果の長さ属性は、255 と character-expression の長さ属性のうちの最小値になります。 character-expression が 空ストリング定数の場合、エラーが発生します。

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

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

実際の長さは、結果の長さ属性と同じになります。 character-expression の長さが結果の長さ属性より短い場合、 結果は結果の長さになるまでブランクが埋め込まれます。 character-expression の長さが結果の長さ属性より長い場合、 結果は切り捨てられます。 切り捨てられたすべての文字がブランクでないと、警告が戻されます。

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

グラフィックから文字
グラフィック表現
組み込みグラフィック・ストリングの値を戻す式。
整数
結果として得られる固定長文字ストリングの長さ属性。 値は、1~255の範囲の整数定数でなければなりません。

長さを指定しない場合、結果の長さ属性は、255 と graphic-expression の長さ属性のうちの最小値になります。 graphic-expression の長さ属性は (3 * length(graphic-expression)) です。 graphic-expression が 空ストリング定数の場合、エラーが発生します。

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

CODEUNITS16 または CODEUNITS32
integer を表すのに使用する単位を指定します。
CODEUNITS16
integer が、16 ビットの UTF-16 コード単位の形で表現されるこ とを指定します。
CODEUNITS32
integer が、32 ビットの UTF-32 コード単位の形で表現されるこ とを指定します。
詳細については、 CODEUNITS16 および CODEUNITS32文字列単位仕様 」を参照してください。

実際の長さは、結果の長さ属性と同じになります。 graphic-expression の長さが結果の長さ属性より短い場合、 結果は結果の長さになるまでブランクが埋め込まれます。 graphic-expression の長さが結果の長さ属性より長い場合、 結果は切り捨てられます。 切り捨てられたすべての文字がブランクでないと、警告が戻されます。

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

日時から文字
日時表現
次に示す組み込みデータ・タイプのうちいずれかの式。
日付
結果は、その日付を 2 番目の引数で指定した形式で文字ストリング表示した ものとなります。 2 番目の引数を省略した場合、形式は、DATE プリコンパイラー・オプション があればこれによって、なければインストール・パネル DSNTIP4 のフィールド DATE FORMAT に よって指定されます。 フォーマットが LOCAL、インストールパネルのLOCAL DATE LENGTHフィールド DSNTIP4 は結果の長さを指定します。 これ以外の場合、結果の長さは 10 となります。

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

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

時刻
結果は、その時刻を 2 番目の引数で指定した形式で文字ストリング表示した ものとなります。 2 番目の引数を省略した場合、形式は、TIME プリコンパイラー・オプション があればこれによって、なければインストール・パネル DSNTIP4 のフィールド TIME FORMAT に よって指定されます。 フォーマットが LOCAL、インストールパネルの「LOCAL TIME LENGTH」フィールド( DSNTIP4 )で結果の長さを指定します。 これ以外の場合、結果の長さは 8 となります。

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

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

タイム・ゾーンなしのタイム・スタンプ
結果は、タイム・スタンプの文字ストリング表記になります。 datetime-expression が TIMESTAMP(0) 値である場合、結果の長さは 19 になります。 datetime-expression が TIMESTAMP(integer) 値である場合、結果の長さは 20+integer になります。 これ以外の場合、結果の長さは 26 となります。 2 番目の引数を指定してはいけません。
Timestamp with time zone
結果は、タイム・ゾーン付きのタイム・スタンプの文字ストリング表現になります。そのフォーマットは yyyy-mm-dd-hh.mm.ss.nnnnnn±th:tm で、そのタイム・スタンプの精度に適した数の 'n' 文字が使用されます。 datetime-expression が TIMESTAMP(0) WITH TIME ZONE である場合、結果の長さは 147 になります。 datetime-expression が TIMESTAMP(integer) WITH TIME ZONE である場合、結果の長さは 148+integer になります。 2 番目の引数を指定してはいけません。

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

ISO, EUR, USAJIS、または LOCAL
結果の文字ストリングの日付形式または時刻フォーマットを指定します。 詳細は、「datetime 値の文字列表現 」を参照してください。
行 ID から文字
行ID式
組み込み行 ID データ・タイプの値を戻す式。

結果は引数の固定長文字ストリング表示です。 結果はビット・データです。

結果の長さは 40 です。 row-ID-expression の長さが 40 より少ない場合、結果は 40 の長さになるまで右側に 16 進のゼロが埋め込まれます。

推奨: アプリケーションの移植性を高めるには、最初の引数が数値の場合、または最初の引数が文字列でlength引数が指定されている場合は、CAST指定を使用します。 詳しくは、 CAST仕様書をご覧ください。

代替構文:
CHAR9 は、最初の引数が 10 進データの場合を除き、CHAR の代わりに指定できます。 CHAR9 を参照してください。

例 1:
HIREDATEは、サンプルテーブル DSN8C10.EMP のDATE列です。 それが 1976 年 12 月 15 日の日付を表す (従業員 140 の) 場合、以下の例は、文字ストリング変数 DATESTRING にストリング値 '12/15/1976' を戻します。
   EXEC SQL SELECT CHAR(HIREDATE, USA)
     INTO :DATESTRING
     FROM DSN8C10.EMP
     WHERE EMPNO = '000140';
例 2:
ホスト変数 HOUR のデータ・タイプは DECIMAL(6,0) で、値 50000 が含まれます。 この値を時刻期間として解釈すると、5 時間になります。 STARTING が、ある表の TIME 列であるものとします。 そこで、STARTING が真夜中から 17 時間 30 分 12 秒後を表す場合、以下の例は、値 '10:30 PM' を戻します。
   CHAR(STARTING+:HOURS, USA)
例 3:
RECEIVED が表 TABLEY の TIMESTAMP 列として定義されているとします。 RECEIVED の日付部分の値が 1997 年 3 月 10 日を表し、時刻部分が午前 6 時 15 秒を表している場合、以下の例は、ストリング値 '1997-03-10-06.00.15.000000' を戻します。
   SELECT CHAR(RECEIVED)
     FROM TABLEY
     WHERE INTCOL = 1234;
例 4:
サンプルテーブル DSN8C10.EMP に対して、以下のSQLステートメントは、CHAR(33)として定義されたホスト変数 AVERAGEを、従業員の平均給与の文字列表現に設定します。
   EXEC SQL SELECT CHAR(AVG(SALARY))
     INTO :AVERAGE
     FROM DSN8C10.EMP;

DEC31 を使うと、AVG を 10 進数に適用した結果は精度が 31 桁 の 10 進数になります。 このような大きな 10 進変数を定義できるホスト言語は、Assembler と C だけです。 このような大きな 10 進数をサポートしないホスト言語の場合は、この例に示す方法を使用してください。

例 5:
サンプルテーブル DSN8C10.EMP の行について、VARCHAR(15)として定義されているLASTNAME列の値を固定長文字列として返します。また、結果の長さを10文字に制限します。
   SELECT CHAR(LASTNAME,10)
     FROM DSN8C10.EMP;
10 文字を超える (末尾ブランクを除いて) 長さの LASTNAME を持つ行に関しては、 値が切り捨てられたことを示す警告が戻されます。
例 6:
FIRSTNAME は、Unicode 表 T1 の VARCHAR(12) 列です。 その値の 1 つが 6 文字ストリング「Jürgen」です。 FIRSTNAME が「関数」の下に示された値を持っている場合、結果は「戻される値」の下に表示されます。
 Function ...                    Returns ...
 -----------------------------------------------------------------------------------
 CHAR(FIRSTNAME,3,CODEUNITS32)   'Jür         ' -- x'4AC3BC722020202020202020'      
 CHAR(FIRSTNAME,3,CODEUNITS16)   'Jür      '    -- x'4AC3BC722020202020'
 CHAR(FIRSTNAME,3,OCTETS)        'Jü'           -- x'4AC3BC' 
例 7
サンプルテーブル DSN8C10.EMP の行について、SMALLINTとして定義されているEDLEVEL列の値を固定長文字列として返します。
   SELECT CHAR(EDLEVEL)
     FROM DSN8C10.EMP;
EDLEVEL の値 18 は、CHAR(6) 値「18    」(18 の後に 4 つのブランク) として戻されます。
例 8:
サンプルテーブル DSN8C10.EMP では、SALARY列はDECIMAL(9,2)として定義されています。 給与が 52750.00 である従業員を対象に、雇用日付と給与を戻します。給与の小数点文字としてコンマを使用します (52750,00)。
   SELECT HIREDATE, CHAR(SALARY, ',')
     FROM DSN8C10.EMP
     WHERE SALARY = 52750.00;
給与は、ストリング値「52750,00」として戻されます。
例 9:
例 8 のシナリオを繰り返します。ただし、60000.00 から SALARY 列を減算し、デフォルトの小数点文字で給与を戻します。
   SELECT HIREDATE, CHAR (60000.00 - SALARY)
     FROM DSN8C10.EMP
     WHERE SALARY = 52750.00;
給与は、ストリング値「7250.00」として戻されます。
例 10:
ホスト変数 SEASONS_TICKETS が INTEGER として定義され、値が 10000 であるとします。 DECIMAL 関数と CHAR 関数を使用して、値を文字ストリング「 10000.00」に変更します。
   SELECT CHAR(DECIMAL(:SEASONS_TICKETS,7,2))
     FROM SYSIBM.SYSDUMMY1;
例 11:
表 T1 の列 COL1 と COL2 の両方が REAL として定義されており、T1 に 2 つの列の値 7.1E+1 と 7.2E+2 を持つ単一行が含まれているとします。 2 つの列を追加して、結果を文字ストリングとして表します。
   SELECT CHAR(COL1 + COL2)
     FROM T1;
結果の文字値は '1.43E2                  ' です。
1 関数がCHARとして呼び出され、BIF_COMPATIBILITYサブシステムパラメータが V9_DECIMAL_VARCHAR に設定されている場合、または関数が SYSCOMPAT_V9.CHAR として呼び出されている場合、結果は関数の結果と同じ形式になります。 CHAR9 関数の結果と同じ形式で表示されます。