DB2 Version 10.1 for Linux, UNIX, and Windows

定数

定数 (リテラル と呼ばれるときもあります) は、値を指定するものです。 定数は、ストリング定数と数値定数に分類されます。 数値定数はさらに、整数、浮動小数点数、または 10 進数に分類されます。

定数は、すべて NOT NULL の属性を持ちます。

数値定数では、負のゼロ値 (-0) は符号のないゼロ (0) と同じ値です。

ユーザー定義タイプには、厳密な型判定があります (緩やかに型付けされた特殊タイプを除きます)。つまり、厳密に型付けされたユーザー定義タイプはそれ自体のタイプとしか互換性がありません。一方、定数には組み込みタイプがあります。 このため、厳密に型付けされたユーザー定義タイプと定数が関与する演算が実行可能なのは、ユーザー定義タイプがその定数の組み込みタイプにキャストされている場合か、または定数がそのユーザー定義タイプにキャストされている場合のみです。例えば、ユーザー定義タイプの比較にある表と特殊タイプを使用する場合、定数 14 との以下の比較が有効です。
   SELECT * FROM CAMP_DB2_ROSTER
     WHERE AGE > CAST(14 AS YOUTH)
   SELECT * FROM CAMP_DB2_ROSTER
     WHERE CAST(AGE AS INTEGER) > 14
以下の比較は無効です。
   SELECT * FROM CAMP_DB2_ROSTER
     WHERE AGE > 14

整数定数

整数定数 は、小数点を除き最大 19 桁の符号付きまたは符号なしの整数を指定します。 整数定数の値が長精度整数の範囲内である場合、 その整数定数のデータ・タイプは長精度整数 (large integer) です。 整数定数の値が長精度整数の範囲外であるが、64 ビット整数の範囲内にある場合、 その整数定数のデータ・タイプは 64 ビット整数 (big integer) です。 64 ビット整数値の範囲外で定義された定数は、10 進定数と見なされます。

長精度整数定数の最小のリテラル表現は -2 147 483 647 であり、 整数値の限界である -2 147 483 648 ではありません。 同様に、64 ビット整数定数の最小のリテラル表現は、-9 223 372 036 854 775 807 であり、 -9 223 372 036 854 775 808 (64 ビット整数値の限界) ではありません。

例:
   64     -15     +100     32767     720176      12345678901

構文図で 'integer' (整数) という用語は、 符号を使用してはならない長精度整数定数を指すために使用されます。

浮動小数点定数

浮動小数点定数 は、E で区切られた 2 つの数値で浮動小数点数を指定します。 最初の数値には符号と小数点を指定することができます。 2 番目の数値には符号を指定できますが、小数点を使用することはできません。 浮動小数点定数のデータ・タイプは倍精度です。 定数の値は、最初の数値と、2 番目の数値で指定される 10 の累乗との積であり、 浮動小数点数の範囲内になければなりません。 定数のバイト数は 30 以下でなければなりません。

例:
   15E1     2.E5     2.2E-1     +5.E+2

10 進定数

10 進定数 は、31 桁以内の数字で構成される符号付きまたは符号なしの数値です。 小数点を備えているか、またはバイナリー整数の範囲に収まらないかのどちらかです。 これは 10 進数の範囲内になければなりません。 精度は桁数の合計数 (前後のゼロを含む)、 位取りは小数点の右側の桁数 (後続ゼロを含む) です。

例:
   25.5     1000.     -15.     +37589.3333333333

10 進浮動小数点定数

10 進浮動小数点特殊値 (これは DECFLOAT(34) と解釈される) 以外の 10 進浮動小数点定数はありません。

それらの特殊値は INFINITY、NAN、および SNAN です。 INFINITY は無限大、つまり絶対値が無限に大きい数を表します。 INFINITY の前には、オプションで符号を付けることができます。 INFINITY の代わりに INF を指定できます。 NAN は Not a Number (NaN) を表し、静止 NaN と呼ばれることもあります。 これは、警告または例外を発生させない未定義の結果を表す値です。 SNAN はシグナリング NaN (sNaN) を表します。 これは、数値演算の中で定義された演算で使用された場合に警告または例外を発生させる未定義の結果を表す値です。 NAN と SNAN の両方の前には、オプションで符号を付けられますが、符号には算術演算の意味はありません。 SNAN は、警告または例外を発生させずに非数値演算で使用できます。例えば、INSERT の VALUES リスト内や、述部内で比較される定数としてなどです。
   SNAN   -INFINITY
列名などの識別子として解釈される可能性のあるコンテキストで特殊値 (INFINITY、INF、NAN、または SNAN) の 1 つが使用される場合、特殊値のストリング表記を 10 進浮動小数点にキャストします。例:
   CAST ('snan' AS DECFLOAT)
   CAST ('INF' AS DECFLOAT)
   CAST ('Nan' AS DECFLOAT) 

すべての非特殊値は、 上記の規則に従って、整数、浮動小数点数、または 10 進定数として解釈されます。 数値の 10 進浮動小数点値を取得するには、文字ストリング定数を伴う DECFLOAT cast 関数を使用します。 浮動小数点定数を DECFLOAT 関数の引数として使用することは推奨されません。浮動小数点数は正確ではなく、結果の 10 進浮動小数点値は、引数を形成する 10 進数字文字とは異なる可能性があるからです。 代わりに、DECFLOAT 関数の引数として文字定数を使用してください。

例えば、DECFLOAT('6.0221415E23', 34) は 10 進浮動小数点値 6.0221415E+23 を戻しますが、DECFLOAT(6.0221415E23, 34) は 10 進浮動小数点値 6.0221415000000003E+23 を戻します。

文字ストリング定数

文字ストリング定数 では、可変長文字ストリングを指定します。文字ストリング定数には、以下の 3 つの形式があります。
  • ストリング区切り文字で始まりストリング区切り文字で終わる文字のシーケンス。この場合のストリング区切り文字はアポストロフィ (') です。ストリング区切り文字とストリング区切り文字の間のバイト数は、32 672 を超えてはなりません。文字ストリング内で 1 つのストリング区切り文字を表したいときは、 ストリング区切り文字を 2 つ連続して使用します。ストリングの中ではない場所でストリング区切り文字を 2 つ連続して使用すると、空ストリングになります。
  • X の後に、ストリング区切り文字で始まりストリング区切り文字で終わる文字のシーケンスを記述する形式。この形式の文字ストリング定数のことを 16 進定数 ともいいます。ストリング区切り文字の間にある文字は、 偶数個の 16 進数字でなければなりません。 ストリング区切り文字の間のブランクは無視されます。 16 進数字の数は、32 672 を超えてはなりません。16 進数字は、数字または A から F までのいずれかの文字 (大文字または小文字) です。16 進表記の規則では、1 つの 16 進数字ペアがそれぞれ 1 つの文字に対応します。この形式の文字ストリング定数を使用すれば、キーボード表現のない文字を指定できるようになります。
  • U& の後に、ストリング区切り文字で始まりストリング区切り文字で終わる文字のシーケンスを記述する形式。オプションとして、その後に UESCAPE 節を指定することもできます。 この形式の文字ストリング定数のことを Unicode ストリング定数 ともいいます。ストリング区切り文字とストリング区切り文字の間のバイト数は、32 672 を超えてはなりません。Unicode ストリング定数は、ステートメント・コンパイル時に、UTF-8 からセクション・コード・ページに変換されます。文字ストリング内で 1 つのストリング区切り文字を表したいときは、 ストリング区切り文字を 2 つ連続して使用します。 文字ストリング内で 1 つの Unicode エスケープ文字を表したいときは、Unicode エスケープ文字を 2 つ連続して使用します。ただし、これらの文字は、文字定数の長さの計算では、1 つの文字としてカウントされます。ストリングの中ではない場所でストリング区切り文字を 2 つ連続して使用すると、空ストリングになります。UTF-8 の文字は、1 バイトから 4 バイトの範囲にまたがっているので、Unicode ストリング定数の最大長は、実際には 32 672 文字よりも少なくなる場合があります。

    文字は、活版印刷文字 (絵文字) でも Unicode コード・ポイントでも表記できます。Unicode 文字のコード・ポイントは、X'000000' から X'10FFFF' までの範囲になります。Unicode 文字をコード・ポイントで表す場合は、Unicode エスケープ文字の後に 4 桁の 16 進数字を記述するか、Unicode エスケープ文字の後に正符号 (+) を入れて、その後に 6 桁の 16 進数字を記述します。デフォルトの Unicode エスケープ文字は、円記号 (¥) ですが、UESCAPE 節で別の文字を指定することもできます。UESCAPE 節では、UESCAPE キーワードの後に、1 つの文字をストリング区切り文字で囲む形で記述します。Unicode エスケープ文字として、正符号 (+)、二重引用符 (")、単一引用符 (')、ブランクは使用できません。また、0 から 9、A から F の文字も、大文字であれ小文字であれ使用できません (SQLSTATE 42604)。例えば、ローマ字 A (大文字) を Unicode コード・ポイントで指定する場合は、¥0041 と ¥+000041 という 2 とおりの方法があります。

定数値は、データベースにバインドされるときに、 必ずデータベース・コード・ページに変換されます。 それは、データベース・コード・ページのものと見なされます。 したがって、定数を FOR BIT DATA 列と結合してその結果が FOR BIT DATA となる式で使用される場合、 定数値は使用時にそのデータベース・コード・ページ表記から変換されません。

例:
'12/14/1985'    '32'    'DON''T CHANGE'    ''
X'FFFF'    X'46 72 61 6E 6B'
U&'¥0141ód¥017A is a city in Poland'   U&'c:¥¥temp'   U&'@+01D11E' UESCAPE '@'
この例の第 2 行の右端のストリングは、VARCHAR パターンの ASCII ストリング 'Frank' に対応しています。最後の行は、'Łódź is a city in Poland'、'c:¥temp'、音楽のト音記号を表す 1 文字にそれぞれ対応しています。

GRAPHIC ストリング定数

GRAPHIC ストリング定数 は、1 バイトのアポストロフィ (') で始まり、1 バイトのアポストロフィ (') で終わる 2 バイト文字の並びで構成される可変長の GRAPHIC ストリングを指定します。そしてその先頭には、1 バイトの G または N が付けられます。アポストロフィとアポストロフィの間の文字は必ず偶数バイトで、GRAPHIC ストリングの長さは 16 336 バイトを超えることはできません。

例:
   G'double-byte character string'
   N'double-byte character string'

MBCS 文字の一部としては、アポストロフィ (') を使用しないでください。 区切り文字と見なされてしまいます。

Unicode データベースでは、可変長 GRAPHIC ストリングを指定する 16 進 GRAPHIC ストリング定数もサポートされます。 16 進数 GRAPHIC ストリングのフォーマットは、GX の後に、アポストロフィで囲んだ一つながりの文字を続けたものです。 アポストロフィの間にある文字は、4 つの 16 進数字の偶数倍でなければなりません。 16 進数字の数は 16 336 を超えてはなりません。 これを超えると、エラー (SQLSTATE 54002) が戻されます。 16 進 GRAPHIC ストリング定数の形式が正しくない場合には、エラーが戻されます (SQLSTATE 42606)。 4 つの数字から成るグループはそれぞれ、1 つの GRAPHIC 文字に対応します。 Unicode データベースでは、これは、1 つの UCS-2 GRAPHIC 文字になります。

例:
   GX'FFFF'
Unicode データベース内のビット・パターン '1111111111111111' を表します。
   GX'005200690063006B'
Unicode データベース内の ASCII ストリング 'Rick' の VARGRAPHIC パターンを表します。

日時定数

日時定数 は、日付、時刻、またはタイム・スタンプを指定します。

通常、文字ストリング定数は、割り当ておよび比較で一定の日時値を表すために使用されます。 ただし、特定の形式の文字ストリング定数の前に、関連付けられたデータ・タイプ名を使用して、定数を文字ストリング定数ではなく日時定数として具体的に表示することができます。3 つの日時定数の形式は、以下のとおりです。
DATE 'yyyy-mm-dd'
値のデータ・タイプは DATE です。
TIME 'hh:mm:ss'
または
TIME 'hh:mm'
値のデータ・タイプは TIME です。
TIMESTAMP 'yyyy-mm-dd hh:mm:ss.nnnnnnnnnnnn'
または
TIMESTAMP 'yyyy-mm-dd-hh.mm.ss.nnnnnnnnnnnn'
小数秒の桁数は 0 から 12 の範囲で変化することがあり、小数秒がない場合にはピリオド文字を省略できます。値のデータ・タイプは TIMESTAMP(p) です。p は小数秒の桁数です。
該当する場合は、それぞれの日時定数で、文字ストリング定数部分の月、日、および時の部分の先行ゼロは省略できます。TIME または TIMESTAMP 定数の分および秒エレメントに先行ゼロ文字を含める必要があります。末尾のブランクを付けることができ、それは無視されます。

UCS-2 GRAPHIC ストリング定数

Unicode データベースでは、可変長 UCS-2 GRAPHIC ストリング定数を指定する 16 進 UCS-2 GRAPHIC ストリングがサポートされます。 16 進数 UCS-2 GRAPHIC ストリング定数のフォーマットは、UX の後に、 アポストロフィで囲んだ一つながりの文字を続けたものです。 アポストロフィの間にある文字は、4 つの 16 進数字の偶数倍でなければなりません。 16 進数字の数は 16 336 を超えてはなりません。 これを超えると、エラー (SQLSTATE 54002) が戻されます。 16 進 UCS-2 GRAPHIC ストリング定数の形式が正しくない場合には、エラーが戻されます (SQLSTATE 42606)。 4 つの数字から成るグループはそれぞれ、1 つの UCS-2 GRAPHIC 文字に対応します。

例:
   UX'0042006F006200620079'
ASCII ストリング 'Bobby' の VARGRAPHIC パターンを表します。

ブール定数

ブール定数は、キーワード TRUE または FALSE を指定し、それぞれ真と偽の値を表します。CAST(NULL AS BOOLEAN) を使用すると、不明の真の値を指定できます。