CHAR スカラー関数

CHAR 関数は、さまざまなデータ・タイプの値の固定長文字ストリング表記を返します。

整数から CHAR へ

構文図を読む構文図をスキップするCHAR(integer-expression )

10 進数から CHAR へ

構文図を読む構文図をスキップするCHAR(decimal-expression ,decimal-character)

浮動小数点から CHAR へ

構文図を読む構文図をスキップする CHAR(floating-point-expression ,decimal-character )

10 進浮動小数点から CHAR へ

構文図を読む構文図をスキップするCHAR(decimal-floating-point-expression ,decimal-character )

文字ストリングから CHAR へ

構文図を読む構文図をスキップするCHAR(character-expression ,integer)

グラフィック・ストリングから CHAR へ

構文図を読む構文図をスキップするCHAR(graphic-expression ,integer)

バイナリー・ストリングから CHAR へ

構文図を読む構文図をスキップする CHAR ( binary-expression ,integer )

日時から CHAR へ

構文図を読む構文図をスキップするCHAR(datetime-expression ,ISOUSAEURJISLOCAL)

ブール値から CHAR へ

構文図を読む構文図をスキップする CHAR ( boolean-expression )

スキーマは SYSIBM です。キーワードが関数シグニチャーで使用されている場合、関数名を修飾名で指定することはできません。 SYSFUN.CHAR(floating-point-expression) シグニチャーは、引き続き使用可能です。 その場合、小数点文字はロケールに依存するため、 データベース・サーバーのロケールに応じてピリオドまたはコンマが戻されます。

整数から CHAR へ
integer-expression
整数データ・タイプの値 (SMALLINT、INTEGER または BIGINT) を戻す式。
結果は、SQL 整数定数の形式による integer-expression固定長文字ストリングです。 結果は、引数内の有効桁数を表す n 個の文字で構成されます。 引数が負の場合は、負符号 (-) が前に付けられます。 結果は左揃えになります。最初の引数のデータ・タイプが次の場合の結果を示します。
  • SMALLINT の場合、結果の長さは 6 です
  • INTEGER の場合、結果の長さは 11 です
  • BIGINT の場合、結果の長さは 20 です
結果内のバイト数が、結果に定義されていた長さ未満の場合、結果の右側に 1 バイトのブランクが埋められます。

結果の コード・ページは、そのセクションのコード・ページです。

10 進数から CHAR へ
decimal-expression
10 進数データ・タイプの値を戻す式。 別の精度と位取りが必要であれば、 まず DECIMAL スカラー関数を使用して変更を行うことができます。
decimal-character
結果文字ストリングの中で 10 進数を区切るために使用する 1 バイト文字定数を指定します。 文字定数を数字、正符号 (+)、負符号 (-)、またはブランク文字にすることはできません (SQLSTATE 42815)。 デフォルトはピリオド (.) 文字です。

結果は、SQL 10 進定数の形式による decimal-expression の固定長文字ストリング表記になります。 その結果の長さは 2+p です (pdecimal-expression の精度)。先行ゼロは含められません。 後続ゼロは含められます。 decimal-expression が負である場合、結果の先頭の文字は負符号 (-) になります。それ以外の場合、最初の文字は数字または小数点文字になります。 decimal-expression の位取りがゼロの場合、小数点文字は戻されません。結果内のバイト数が、結果に定義されていた長さ未満の場合、結果の右側に 1 バイトのブランクが埋められます。

結果の コード・ページは、そのセクションのコード・ページです。

浮動小数点から CHAR へ
floating-point-expression
浮動小数点データ・タイプ (DOUBLE または REAL) である値を戻す式。
decimal-character
結果文字ストリングの中で 10 進数を区切るために使用する 1 バイト文字定数を指定します。 文字定数を数字、正符号 (+)、負符号 (-)、またはブランク文字にすることはできません (SQLSTATE 42815)。 デフォルトはピリオド (.) 文字です。

結果は、SQL 浮動小数点定数の形式による floating-point-expression の固定長文字ストリング表記になります。 結果の長さは 24 文字です。 結果は、ピリオドと一連の数字が後に続くゼロ以外の 1 桁の数字で小数部が構成されることで、floating-point-expression の値を表すことのできる最小の文字数になります。 floating-point-expression が負である場合、結果の先頭の文字は負符号 (-) になります。それ以外の場合、 最初の文字は数字になります。floating-point-expression がゼロの場合、結果は 0E0 になります。結果のバイト数が 24 未満の場合、結果の右側に 1 バイトのブランクが埋められます。

結果の コード・ページは、そのセクションのコード・ページです。

10 進浮動小数点から CHAR へ
decimal-floating-point-expression
10 進浮動小数点データ・タイプ (DECFLOAT) である値を戻す式。
decimal-character
結果文字ストリングの中で 10 進数を区切るために使用する 1 バイト文字定数を指定します。 文字定数を数字、正符号 (+)、負符号 (-)、またはブランク文字にすることはできません (SQLSTATE 42815)。 デフォルトはピリオド (.) 文字です。

結果は、SQL 10 進浮動小数点定数の形式による decimal-floating-point-expression の固定長文字ストリング表記になります。 結果の長さ属性は 42 文字です。結果は、decimal-floating-point-expression の値を表すことのできる最小の文字数になります。 decimal-floating-point-expression が負である場合、結果の先頭の文字は負符号 (-) になります。それ以外の場合、 最初の文字は数字になります。decimal-floating-point-expression がゼロの場合、結果は 0 になります。

decimal-floating-point-expression の値が特殊値 Infinity、sNaN、または NaN の場合、ストリング「INFINITY」、「SNAN」、および「NAN」がそれぞれ戻されます。特殊値が負である場合、結果の先頭の文字は負符号 (-) になります。10 進浮動小数点の特殊値 sNaN は、ストリングに変換される場合、警告を生じません。結果の文字数が 42 未満の場合、結果の右側に 1 バイトのブランクが埋められます。

結果の コード・ページは、そのセクションのコード・ページです。

文字ストリングから CHAR へ
character-expression
組み込み文字ストリング・データ・タイプの値を戻す式。
integer
結果の固定長文字ストリングの長さ属性を指定する整数定数。 値は、0 から結果のストリング単位での CHAR データ・タイプの最大長まででなければなりません。
2 番目の引数が 指定されていない場合
  • character-expression が空ストリング定数の場合、結果の長さ属性は 0 です。
  • それ以外の場合は、結果の長さ属性は次の値のうち小さいほうの値になります。
    • 結果のストリング単位での CHAR データ・タイプの最大長
    • 最初の引数の長さ属性。

結果は固定長文字ストリングです。 character-expression が FOR BIT DATA である場合、結果は FOR BIT DATA です。

結果の長さは、結果の長さ属性と同じです。character-expression の長さによって次のように処理されます。
  • 結果の長さ属性より短い場合は、結果の長さ属性になるまでブランクが結果に埋め込まれます。
  • 結果の長さ属性より長い場合は、次のように処理されます。
    • 結果のストリング単位が CODEUNITS32 の場合は、切り捨てが行われます。切り捨てられたのがブランク文字のみであり、character-expression が CHAR または VARCHAR の場合は、警告は戻されません。それ以外の場合は、警告が戻されます (SQLSTATE 01004)。
    • integer が指定された場合、切り捨てが行われます。 切り捨てられたのがブランク文字のみであり、character-expression が CHAR または VARCHAR の場合は、警告は戻されません。それ以外の場合は、警告が戻されます (SQLSTATE 01004)。マルチバイト文字の一部が切り捨てられた場合、その部分文字はブランク文字で置き換えられます。 この動作は今後のリリースで変更される可能性があるため、この動作に依存しないでください。
    • integer が指定されず、character-expression が VARCHAR の場合、切り捨ての動作は次のとおりです。
      • ブランク文字だけが切り捨てられなければならない場合、切り捨てが実行され、警告は返されません。
      • 非ブランク文字が切り捨てられなければならない場合、エラーが返されます (SQLSTATE 22001)。
    • integer が指定されず、character-expression が CLOB の場合、エラーが返されます (SQLSTATE 22001)。
グラフィック・ストリングから CHAR へ
graphic-expression
組み込み GRAPHIC ストリング・データ・タイプの値を戻す式。
integer
結果の固定長文字ストリングの長さ属性を指定する整数定数。 値は、0 から結果のストリング単位での CHAR データ・タイプの最大長まででなければなりません。
2 番目の引数が 指定されていない場合
  • graphic-expression が空ストリング定数の場合、結果の長さ属性は 0 です。
  • graphic-expression のストリング単位が CODEUNITS32 の場合、結果の長さ属性は次の値のうちの小さい方になります。
    • 結果のストリング単位での CHAR データ・タイプの最大長。
    • 最初の引数の長さ属性。
  • それ以外の場合は、結果の長さ属性は次の値のうち小さいほうの値になります。
    • 結果のストリング単位での CHAR データ・タイプの最大長。
    • 最初の引数の長さ属性の 3 倍。

結果は、graphic-expression から変換される固定長文字ストリングになります。 結果の長さは、結果の長さ属性と同じです。

文字ストリングに変換される graphic-expression の長さによって、次のように処理されます。
  • 結果の長さ属性より短い場合は、結果の長さ属性になるまでブランクが結果に埋め込まれます。
  • 結果の長さ属性より長い場合は、次のように処理されます。
    • 結果のストリング単位が CODEUNITS32 の場合は、切り捨てが行われます。切り捨てられたのがブランク文字のみであり、graphic-expression が GRAPHIC または VARGRAPHIC の場合は、警告は戻されません。それ以外の場合は、警告が戻されます (SQLSTATE 01004)。
    • integer が指定されていて、graphic-expression が GRAPHIC または VARGRAPHIC の場合、切り捨てが行われ、警告は返されません。
    • integer が指定されていて、graphic-expression が DBCLOB の場合、切り捨てが行われ、警告が返されます (SQLSTATE 01004)。
    • integer が指定されていない場合、エラーが返されます (SQLSTATE 22001)。
バイナリー・ストリングから CHAR へ
binary-expression
組み込みバイナリー・ストリング・データ・タイプの値を戻す式。
integer
結果の固定長文字ストリングの長さ属性を指定する整数定数。

結果は固定長 FOR BIT DATA 文字ストリングです。必要に応じてブランクが埋め込まれます。

日時から CHAR へ
datetime-expression
次のデータ・タイプのいずれかの式。
DATE
結果は、2 番目の引数によって指定された形式の日付の文字ストリング表記になります。 結果の長さは 10 文字です。 2 番目の引数が指定され、その値が有効な値でない場合には、 エラーが戻されます (SQLSTATE 42703)。
TIME
結果は、2 番目の引数によって指定された形式の時刻の文字ストリング表記になります。 結果の長さは 8 文字です。2 番目の引数が指定され、その値が有効でない場合には、エラーが戻されます (SQLSTATE 42703)。
TIMESTAMP
結果は、タイム・スタンプの文字ストリング表記になります。 datetime-expression のデータ・タイプが TIMESTAMP(0) の場合、その結果の長さは 19 になります。datetime-expression のデータ・タイプが TIMESTAMP(n) の場合 (n は 1 から 12 までの間)、その結果の長さは 20+n になります。それ以外の場合は結果の長さは 26 です。2 番目の引数は適用されないので、指定してはなりません (SQLSTATE 42815)。

結果の コード・ページは、そのセクションのコード・ページです。

ブール値から CHAR へ
boolean-expression
ブール値 (TRUE または FALSE) を返す式。 結果は 'TRUE ' (E の後にブランクがある) または 'FALSE' です。

結果

CHAR 関数は、以下の固定長文字ストリング表記を戻します。
  • 整数 (最初の引数が SMALLINT、INTEGER、または BIGINT の場合)
  • 10 進数 (最初の引数が 10 進数の場合)
  • 倍精度浮動小数点 (最初の引数が DOUBLE または REAL の場合)
  • 10 進浮動小数点数 (最初の引数が DECFLOAT の場合)
  • 文字ストリング (最初の引数がいずれかのタイプの文字ストリングの場合)
  • GRAPHIC ストリング (Unicode データベースのみ)。 これは、最初の引数がいずれかのタイプの GRAPHIC ストリングの場合です。
  • 日付/時刻値 (最初の引数が DATE、TIME、または TIMESTAMP の場合)
  • ブール値 (TRUE または FALSE)
Unicode 以外のデータベースでは、結果のストリング単位は OCTETS です。それ以外の場合、結果のストリング単位は、最初の引数のデータ・タイプによって決定されます。
  • OCTETS。最初の引数が文字ストリングの場合、あるいは OCTETS、CODEUNITS16、または 2 バイトのストリング単位の GRAPHIC ストリングの場合。
  • CODEUNITS32。最初の引数が文字ストリングの場合、または CODEUNITS32 のストリング単位の GRAPHIC ストリングの場合。
  • 環境のデフォルトのストリング単位によって決定される。最初の引数が文字ストリングでも GRAPHIC ストリングでもない場合。
Unicode データベースでは、複数バイト文字を介して出力ストリングが途中で切り捨てられると、 次のようになります。
  • 入力が文字ストリングであった場合、部分的な文字は 1 つ以上のブランクに置き換えられます。
  • 入力が GRAPHIC ストリングであった場合、部分的な文字は空ストリングに置き換えられます。
このどちらの動作も過信しないでください。今後のリリースで変更される可能性があるからです。

最初の引数が NULL になる可能性がある場合、結果も NULL になる可能性があります。 最初の引数が NULL の場合には、結果も NULL 値です。

  • アプリケーションの移植性の向上: 最初の引数が数値である、または最初の引数がストリングで長さ引数が指定されている場合、アプリケーションの移植性を高めるため、この関数ではなく、CAST 指定を使用してください。
  • 10 進数 → 文字および先行ゼロ: 新規データベースの dec_to_char_fmt データベース構成パラメーターのデフォルト値は「NEW」です。 この場合、この関数は、SQL 標準のキャスト規則に沿った結果を返します。これは、VARCHAR 関数からの結果と一貫性があります。

  • 例 1: PRSTDATE 列には、1988-12-25 に相当する内部値が入っているとします。 以下の関数は、値「12/25/1988」を戻します。
       CHAR(PRSTDATE, USA)
  • 例 2: STARTING 列には 17:12:30 に相当する内部値が入っており、 ホスト変数 HOUR_DUR (decimal(6,0)) は、050000 (すなわち 5 時間) の値をもった時刻期間であると仮定します。 以下の関数は、値「5:12 PM」を戻します。
       CHAR(STARTING, USA)
    以下の関数は、値「10:12 PM」を戻します。
       CHAR(STARTING + :HOUR_DUR, USA)
  • 例 3: RECEIVED 列 (TIMESTAMP) には、 列 PRSTDATE と列 STARTING を組み合わせたものに相当する内部値が入っているとします。 以下の関数は、値「1988-12-25-17.12.30.000000」を戻します。
       CHAR(RECEIVED)
  • 例 4: LASTNAME 列は VARCHAR(15) と定義されています。 以下の関数は、10 バイトの長さの固定長文字ストリングでこの列内に値を戻します。 10 バイトを超える長さ (末尾ブランクを除く) の LASTNAME 値は切り捨てられて、警告が戻されます。
       SELECT CHAR(LASTNAME,10) FROM EMPLOYEE
  • 例 5: EDLEVEL 列は SMALLINT と定義されています。 以下の関数は、固定長文字ストリングでこの列内に値を戻します。 EDLEVEL 値が 18 であれば、CHAR(6) 値 「18」(後に 4 つのブランクが続く) で戻されます。
       SELECT CHAR(EDLEVEL) FROM EMPLOYEE
  • 例 6: SALARY 列は、9 の精度と 2 の位取りをもった DECIMAL と定義されています。現行値 (18357.50) は、小数点文字としてコンマを使って表示されることになります (18357,50)。 以下の関数は、値 「18357,50」(後に 3 つのブランクが続く) を戻します。
       CHAR(SALARY, ',')
  • 例 7: SALARY 列内の値が 20000.25 から減算されて、 デフォルトの小数点文字付きで表示されることになります。 以下の関数は、値「-0001642.75」(後に 3 つのブランクが続く) を戻します。
       CHAR(20000.25 - SALARY)
  • 例 8: ホスト変数 SEASONS_TICKETS は INTEGER と定義されていて、 10000 の値をもっていると想定します。 以下の関数は、値「10000.00」を戻します。
       CHAR(DECIMAL(:SEASONS_TICKETS,7,2))
  • 例 9: ホスト変数 DOUBLE_NUM は DOUBLE と定義されていて、 -987.654321E-35 の値をもっていると想定します。 以下の関数は、結果データ・タイプが CHAR(24) であるため、値「-9.87654321E-33」(9 つの末尾ブランクが続く) を戻します。
       CHAR(:DOUBLE_NUM)
  • 例 10: 以下のステートメントは、値が「TRUE」のデータ・タイプ CHAR のストリングを返します。
       values CHAR(3=3)
  • 例 11: 以下のステートメントは、値が「FALSE」のデータ・タイプ CHAR のストリングを返します。
       values CHAR(3>3)