定数

定数 (リテラル とも 呼ばれる) は、 値を指定します。 定数は、NULL 定数、ストリング定数、数値定数、または日時定数として分類されます。 数値定数はさらに、整数、浮動小数点数、10 進数、または 10 進浮動小数点として分類されます。 ストリング定数は、文字、グラフィック、またはバイナリーとして分類されます。

変更の開始すべての定数、NULL 定数を除く には属性 NOT NULLがあります。 値がゼロの数値定数では、負符号は無視されます。変更の終わり

NULL 定数以外の定数には、組み込みデータ・タイプがあります。 したがって、定数と特殊タイプ を含む演算の場合、特殊タイプを定数の組み込みデータ・タイプにキャストする か、または定数を特殊タイプにキャストする必要があります。 例えば、「ユーザー定義の型比較 」を参照してください。このセクションには、定数を別の型と比較するためのデータ型のキャストの例が記載されています。

NULL 定数

NULL 定数は、 NULL 値を示します。

NULL 定数にデータ・タイプがありません。 NULL キーワードのデータ・タイプは、それが使用されるコンテキストによって提供されます。または、CAST を使用してデータ・タイプを割り当てることができます。

整数定数

整数定数 は、小数点を除き最大 19 桁の符号付きまたは符号なしの整数を指定します。

整数定数の値が長精度整数の範囲内である場合、 その整数定数のデータ・タイプは長精度整数 (large integer) です。 値が長精度整数の範囲外であるが、64 ビット整数の範囲内にある場合、その整定数のデータ・タイプは 64 ビット整数です。 64 ビット整数値の範囲外で定義された定数は、10 進定数と見なされます。

例えば、以下の値は整数定数です

  64     -15     +100     32767     720176

構文図で使用している整数 という用語は、符号を含むことのできない長精度整数定数を表しています。

浮動小数点定数

浮動小数点定数 は、2 つの数値を E で分けた形式で倍精度の浮動小数点数を指定します。

最初の数値には、符号と小数点を入れることができます。 2 番目の数値には、符号は入れられますが、小数点は入れられません。 定数の値は、最初の数値と、2 番目の数値で指定された 10 の 累乗値との積です。 この値は、浮動小数点数の範囲内になければなりません。 定数の中の文字数は、30 を超えてはなりません。 先行ゼロを除いて、最初の数値の桁数は、17 桁を超えてはなりません。 また 2 番目の数値の桁数は 2 桁を超えてはなりません。

例えば、以下の浮動小数点定数は、数値「150」、「200000」、 -0.22、「500」を表します
  15E1     2.E5    -2.2E-1     +5.E+2

10 進定数

小数定数は、31桁以下の符号付きまたは符号なしの数値であり、小数点を含むか、または2進整数の範囲外である。

精度は総桁数であり、小数点より右の桁数があれば、これも含めたものとなります。 総桁数には、先行ゼロと後続ゼロもすべて含まれます。 位取りは、後続ゼロを含めた小数点の右側の桁数です。

精度は総桁数であり、小数点より右の桁数があれば、これも含めたものとなります。 総桁数には、先行ゼロと後続ゼロもすべて含まれます。 位取りは、後続ゼロを含めた小数点の右側の桁数です。

例えば、以下の小数定数は、それぞれ精度が5と2、スケールが4と0、2と0、23と2です
  025.50   1000.   -15.   +375893333333333333333.33

10進浮動小数点定数

小数浮動小数点定数は、小数浮動小数点数を2つの数字で表し、Eで区切ります。 最初の数値には、符号と小数点を入れることができます。 2 番目の数値には、符号は入れられますが、小数点は入れられません。

定数の値は、最初の数値と、2 番目の数値で指定された 10 の 累乗値との積です。 この値は、DECFLOAT(34) の範囲内でなければなりません。 定数の中の文字数は 42 個を超えてはなりません。 先行ゼロを除いて、最初の数値の桁数は 34 桁を超えてはならず、2 番目の数値の桁数は 4 桁を超えてはなりません。

Eで区切られた2つの数値として指定された定数は、その値が浮動小数点定数の範囲外である場合に限り、10進浮動小数点定数となります。 E を含まない数値として指定され、31 桁を超えている定数も、10 進浮動小数点定数です。

数値定数のほかに、以下の特殊値を使用して、10 進浮動小数点特殊値を指定することができます。

  • INF または INFINITY - 無限大を表します。
  • NAN - 静止非数字 (not-a-number) を表します。
  • SNAN - シグナル非数字 (signaling not-a-number) を表します。

特殊値は、大文字と小文字を任意に組み合わせ、前に演算符号 (+ または -) を付けることができます。

SNAN は、数値演算に使用すると、警告または例外が発生します。NAN の場合は発生しません。 SNAN は、非数値演算に使用すれば、警告や例外は発生しません。 例えば、SNAN は挿入操作の VALUES リストの中で使用したり、述部の比較の中で定数として使用したりできます。

述部に特殊値が使用される場合、以下の優先順位が適用されます。

-NAN < -SNAN < -INFINITY < -0 < 0 < INFINITY < SNAN < NAN
例えば、以下の小数浮動小数点定数は、123456789012345678、 sNaN,、および負の無限大を表します
  123456789012345678E0         SNAN        -INFINITY

特殊値のいずれかを、それが ID (例えば、列名など) として解釈される可能性のあるコンテキストで使用する場合、その特殊値を表すストリング定数を 10 進浮動小数点にキャストします。

CAST ('snan' AS DECFLOAT)
CAST ('INF' AS DECFLOAT)
CAST ('Nan' AS DECFLOAT) 

文字ストリング定数

文字ストリング定数 は可変長文字ストリングを指定します。 文字列定数は、以下の2つの形式のうちの1つです

  • 文字列の区切り文字(アポストロフィ(')または引用符("))で始まり、同じ文字で終わる文字の並び。どちらが適用できるかを決定する要因については、「文字列の区切り文字としてのアポストロフィと引用符 」を参照してください。 この形式の ストリング定数は、ストリング区切り文字で囲まれた文字ストリングを指定します。 区切り文字の間のバイト数は、32704 を超えてはなりません。 32704 という限度は、ストリングの UTF-8 表現の長さ (バイト) を示しています。 UTF-8 以外の CCSID (例えば、EBCDIC CCSID) を使用してストリングを作成した場合、UTF-8 表現の長さは、ソース CCSID のストリング表現の長さと異なる可能性があります。 文字ストリング内で 1 つのストリング区切り文字を表したいときは、 ストリング区切り文字を 2 つ連続して使用します。
  • X の後に、ストリング区切り文字で始まり、ストリング区切り文字で終わる文字シーケンスを続けたもの。 この形式の文字ストリング定数のことを 16 進定数 ともいいます。 ストリング区切り文字の間にある文字は、 偶数個の 16 進数字でなければなりません。 16 進数字の数は、32704 を超えてはなりません。 16 進数字は、数字または A から F のいずれかの文字です。 MIXED DATA サブシステム・パラメーターが YES に設定されている場合は、16 進定数の 16 進数字を大文字で指定する必要があります。 そうでないと、SQL ステートメントを処理するときにエラーが返される場合があります。 16 進表記の規則では、1 つの 16 進数字ペアがそれぞれ 1 つの文字に対応します。 16 進定数を使えば、キーボードにない文字を指定することができます。

以下の例は文字列定数です。 この例の右端のストリング ('') は、空の文字ストリング定数を表します。これは、長さがゼロのストリングです。

'12/14/1985'    '32'    'DON''T CHANGE'    X'FFFF'    ''

文字ストリング定数に DBCS サブストリング が含まれている場合、そのストリングは混合データとして分類されます。 それ以外の場合はすべて、文字ストリング定数は SBCS データとして分類されます。 定数に割り当てられるCCSIDについては、 文字列のエンコード方式とCCSIDの規則を参照のこと。 混合ストリング定数は、1 バイト文字同士の間で切れば、 ある行から次の行に続けることができます。 Unicode ストリングは、ストリングの内容に関係なく、 常に混合ストリングと見なされます。

Unicode の場合、文字定数は UTF-8 および UTF-16 に割り当てることができます。 定数の形式は関係ありません。 通常、文字ストリング定数は文字ストリングでだけ 使用されますが、グラフィック UTF-16 データで使用することもできます。 しかし、16 進定数は単なる文字データです。 したがって、UTF-16 データ・ストリングにデータを挿入するのに使用される 16 進定数 は、UTF-16 形式でなく、UTF-8 形式にする必要があります。 例えば、1 という数値を UTF-16 列に挿入するときは、X'0031' ではなく X'31' を使用することになります。 X'0031' は UTF-16 の値ですが、 Db2 は2つの別々の UTF-8 コードポイントとして扱います。 したがって、X'0031'X'00000031' になります。

バイナリー・ストリング定数

2 進ストリング定数 は、可変長の 2 進ストリングを指定します。

バイナリー・ストリング定数は、BX の後に、ストリング区切り文字で始まり、ストリング区切り文字で終わる文字シーケンスを指定して形成します。 ストリング区切り文字の間にある文字は、 偶数個の 16 進数字でなければなりません。 16 進数字の数は、32704 を超えてはなりません。

16 進数字は、数字または A から F までの文字 (大文字または小文字) です。 16 進表記の規則に基づき、1 対の 16 進数字が 1 バイトを表します。 この表現は、X''形式を使用する文字定数の表現と類似していることに注意してください。ただし、バイナリ文字列定数と文字列定数は互換性がなく、X''形式はバイナリ文字列定数を指定するために使用できません。BX''形式が文字列定数を指定するために使用できないのと同様です。

以下の例は、2進数文字列定数です

BX'0000'    BX'C141C242'     BX'FF00FF01FF'

グラフィック・ストリング定数

グラフィック・ストリング定数 は 可変長グラフィック・ストリングを指定します。 詳細は、 グラフィック文字列定数をご覧ください。

日時定数

日時定数 は特定の形式の 文字ストリング定数です。 詳細は、 日付と時刻の定数をご覧ください