定数 (リテラル と呼ばれるときもあります) は、 値を指定するものです。 定数は、ストリング定数か数値定数かに分類されます。 数値定数はさらに、整数、浮動小数点数、または 10 進数に分類されます。
定数は、すべて NOT NULL の属性を持ちます。
数値定数では、負のゼロ値 (-0) は符号のないゼロ (0) と同じ値です。
整数定数 は、 小数点を除き最大 19 桁の符号付きまたは符号なしの整数を指定します。 整数定数の値が長精度整数の範囲内である場合、 その整数定数のデータ・タイプは長精度整数 (large integer) です。 整数定数の値が長精度整数の範囲外であるが、大整数の範囲内にある場合、 その整数定数のデータ・タイプは大整数 (big integer) です。 大整数値の範囲外で定義された定数は、10 進定数とみなされます。
長精度整数定数の最小のリテラル表現は -2 147 483 647 であり、 整数値の限界である -2 147 483 648 ではありません。 同様に、大整数定数の最小のリテラル表現は、 -9 223 372 036 854 775 807 であり、 -9 223 372 036 854 775 808 (大整数値の限界) ではありません。
例
64 -15 +100 32767 720176 12345678901
構文図で、'integer' (整数) という用語は、 符号を含んではならない長精度整数定数を指すものとして使用されます。
浮動小数点定数 は、 E で区切られた 2 つの数値で浮動小数点数を指定します。 最初の数値には符号と小数点を指定することができます。 2 番目の数値には符号を指定できますが、小数点を含めることはできません。 浮動小数点定数のデータ・タイプは倍精度です。 定数の値は、最初の数値と、2 番目の数値で指定される 10 の累乗との積であり、 浮動小数点数の範囲内になければなりません。 定数の文字数は 30 以下でなければなりません。
例
15E1 2.E5 2.2E-1 +5.E+2
10 進定数 は、 31 桁以内の数字で構成される符号付きまたは符号なしの数値です。 小数点を含むものか、 または、2 進整数の範囲に収まらないもののどちらかです。 10 進定数の値は 10 進数の範囲内になければなりません。 精度は桁数の合計数 (前後のゼロを含む)、 位取りは小数点の右側の桁数 (後続ゼロを含む) です。
例
25.5 1000. -15. +37589.3333333333
文字ストリング定数 は、 可変長の文字ストリングを指定するもので、 アポストロフィ (') で始まりアポストロフィで終わる文字の並びで構成されます。 ストリング定数のこの形式では、 ストリング区切り文字の間に文字ストリングを指定します。 文字ストリングの長さは、32 672 バイト以下でなければなりません。 ストリング区切り文字の間で 1 つのストリング区切り文字を表したいときは、 ストリング区切り文字を 2 つ連続して使用します。
例
'12/14/1985' '32' 'DON''T CHANGE'
定数値は、データベースにバインドされるときに、 必ずデータベース・コード・ページに変換されます。 それは、データベース・コード・ページのものとみなされます。 したがって、定数を FOR BIT DATA 列と結合して、 その結果が FOR BIT DATA となる式で使用される場合、 定数値は使用時にそのデータベース・コード・ページ表記から変換されません。
16 進定数 は、 アプリケーション・サーバーのコード・ページを使って可変長の文字ストリングを指定します。
16 進数ストリング定数の形式は、X の後に、 アポストロフィ (一重引用符) で囲んだ文字の並びを続けたものです。 アポストロフィの間にある文字は、 偶数個の 16 進数字でなければなりません。 16 進数字の数は 16 336 以下でなければなりません。 これを超えると、エラー (SQLSTATE -54002) になります。 1 桁の 16 進数字は 4 ビットを表します。 これは、数字、または英字 A 〜 F (大文字か小文字に関係なく) のいずれかとして指定されます。 この場合、たとえば A はビット・パターン '1010' を表し、B はビット・パターン '1011' を表します。 以下同様です。16 進定数の形式に誤りがある (たとえば、 無効な 16 進数もしくは奇数の 16 進数が入っている) 場合、 エラーが生じます (SQLSTATE 42606)。
例
X'FFFF' representing the bit pattern '1111111111111111' X'4672616E6B' representing the VARCHAR pattern of the ASCII string 'Frank'
漢字ストリング定数 は、可変長の漢字ストリングを指定するもので、 先頭の単一バイトの G または N の後に、 単一バイトのアポストロフィ (') で囲んだ 2 バイト文字の並びを続けます。 この形式のストリング定数では、ストリング区切り文字の間に漢字ストリングを指定します。 漢字ストリングの長さは必ず偶数バイトであり、 16 336 バイト以下でなければなりません。
例:
G'double-byte character string' N'double-byte character string'
MBCS 文字の一部としては、単引用符 (') を使用しないでください。 区切り文字とみなされてしまいます。
ユーザー定義タイプは強力なタイプ指定です。 つまり、ユーザー定義タイプはそれ自体のタイプとしか互換性がありません。 一方、定数には組み込みタイプがあります。 このため、ユーザー定義タイプと定数の関係する演算は、 ユーザー定義タイプがその定数の組み込みタイプにキャストされている場合、 または定数がそのユーザー定義タイプにキャストされている場合にのみ実行可能です (キャストについては、 CAST 指定を参照)。 たとえば、ユーザー定義タイプの比較にある表と特殊タイプを使用する場合、 定数 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