定数

定数はリテラル値です。

SQL構文

{IntegerValue | FloatValue |FloatingPointLiteral|
    FixedPointValue | 'CharacterString'|
    'NationalCharacterString' | HexadecimalLiteral |
    'DateString' | DateLiteral |'TimeString' | 
    TimeLiteral | 'TimestampString' | TimestampLiteral |
    IntervalLiteral | BINARY_FLOAT_INFINITY |
    BINARY_DOUBLE_INFINITY | -BINARY_FLOAT_INFINITY |
    -BINARY_DOUBLE_INFINITY | BINARY_FLOAT_NAN |
     BINARY_DOUBLE_NAN
}
定数 説明

IntegerValue

TT_INTEGERTT_BIGINTTT_SMALLINTデータ型と互換性のある整数、またはTT_TINYINTデータ型と互換性のある符号なし整数です。

次に例を示します:

155, 5, -17

FloatValue

BINARY_FLOATデータ型またはBINARY_DOUBLEデータ型と互換性のある浮動小数点数です。

例:

.2E-4, 1.23e -4, 27.03, -13.1

FloatingPointLiteral

浮動小数点リテラル

これらは、BINARY_FLOATデータ型およびBINARY_DOUBLEデータ型と互換性があります。fまたはFは、数値が32ビット浮動小数点数(BINARY_FLOAT型)であることを示します。dまたはDは、数値が64ビット浮動小数点数(BINARY_DOUBLE型)であることを示します。次に例を示します:

123.23F, 0.5d

FixedPointValue

BINARY_FLOATBINARY_DOUBLENUMBERデータ型と互換性のある固定小数点数です。

次に例を示します:

27.03

CharacterString

CHARデータ型またはVARCHAR2データ型と互換性のある文字列です。

文字列定数は、一重引用符で囲みます。次に例を示します:

'DON''T JUMP!'

行中の2つの一重引用符は一重引用符として解釈され、区切り文字や空の文字列としては解釈されません。

NationalCharacterString

NCHARデータ型またはNVARCHAR2データ型と互換性のある文字列です。

各国語文字列定数の先頭には、Nまたはnのインジケータが付加され、一重引用符で区切られます。次に例を示します:

N'Here''s how!'

行中の2つの一重引用符は、一重引用符として解釈されます。

各国語文字列定数は、次の組合せで構成されます。

  • ASCII文字

  • UTF-8にエンコードされたUnicode文字

  • エスケープされたUnicode文字

ASCII文字およびUTF-8にエンコードされた文字は、対応するUTF-16書式のUnicode文字に内部的に変換されます。

エスケープされたUnicode文字の書式は、\uxxxxです。xxxxは、Unicode文字を表す4桁の16進数字です。次に例を示します:

N'This is an \u0061'

これは、次と同じです:

N'This is an a'

もう1つの\を使用して、\u自体をエスケープできます。シーケンス\\uは、常に\uに変換されます。他のエスケープ文字は認識されません。

HexadecimalLiteral

16進リテラル

数字0-9とA-F(またはa-f)を含む16進リテラルは、BINARYVARBINARYCHARVARCHAR2およびBLOBデータ型と互換性があります。HexadecimalLiteral定数の先頭には、文字0xを付加する必要があります。次に例を示します:

0xFFFAB0880088343330FFAA7

または

0x000A001231

奇数桁の16進数字の先頭には、偶数桁にするために0が付加されます。たとえば、値0x1230x0123に変換されます。

文字リテラルを指定する場合は、文字のバイナリ値を使用します。たとえば、次に、表tabvbVARBINARY列のcolbinに16進リテラルおよび文字リテラルが挿入されるときに格納される内容を示します。

Command> INSERT INTO tabvb VALUES (0x1234);
1 row inserted.
Command> INSERT INTO tabvb VALUES ('1234');
1 row inserted.
Command> SELECT colbin FROM tabvb;
< 1234 >
< 31323334 >
2 rows found.

ただし、Oracle Databaseは'1234'などの文字リテラルのみを受け入れ、その文字リテラルを0x1234のバイナリ・リテラルに変換する点が異なります。結果として、insert into tabvb values ('1234');は、Oracle DatabaseとTimesTenで動作が異なります。Oracle Databaseは、0x1234を16進リテラルとして受け入れません。

DateString

一重引用符(')で囲まれたYYYY-MM-DD HH:MI:SS書式の文字列です。

次に例を示します:

'2007-01-27 12:00:00'

YYYYフィールドの値は4桁である必要があります。MMDDフィールドには2桁の値を指定します。空白は、後続の空白(日のフィールドの後)のみ使用できます。範囲は'-4713-01-01'(紀元前4712年1月1日)から'9999-12-31'(9999年12月31日)までです。時刻部分は必須ではありません。次に例を示します:

'2007-01-27'

TT_DATEデータ型の場合、文字列の書式はYYYY-MM-DDになります。範囲は、'1753-01-01'から'9999-12-31'までです。

DateLiteral

書式: DATE DateString

次に例を示します:

DATE '2007-01-27' or DATE '2007-01-27 12:00:00'

TT_DATEデータ型の場合、リテラルTT_DATEを使用します。次に例を示します:

TT_DATE '2007-01-27'. 

TT_DATEリテラルでは時刻部分は指定しないでください。

DATEキーワードの大文字と小文字は区別されません。

TimesTenでは、ODBCの日付リテラル構文もサポートされます。次に例を示します:

{d '2007-01-27'}. 

詳細はODBCドキュメントを参照してください。

TimeString

一重引用符(')で囲まれたHH:MI:SS書式の文字列です。

次に例を示します:

'20:25:30'

範囲は'00:00:00'から'23:59:59'までです。コンポーネントはすべて2桁である必要があります。後続の空白(2番目のフィールドの後)のみ使用できます。

TimeLiteral

書式: TIME TimeString

次に例を示します:

TIME '20:25:30'

TIMEキーワードの大文字と小文字は区別されません。

使用例:

INSERT INTO timetable VALUES (TIME '10:00:00');

SELECT * FROM timetable WHERE col1 < TIME '10:00:00';

TimesTenでは、ODBCの時間リテラル構文もサポートされます。次に例を示します:

{t '12:00:00'}

TimestampString

一重引用符(')で囲まれたYYYY-MM-DD HH:MI:SS [.FFFFFFFFF]書式の文字列です。

範囲は'-4713-01-01' (紀元前4712年1月1日)から '9999-12-31' (9999年12月31日)までです。年のフィールドは、4桁である必要があります。他のフィールドは、小数部を除いて2桁の値である必要があります。小数部は0から9桁で指定できます。TT_TIMESTAMPデータ型の場合、一重引用符(')で囲まれたYYYY-MM-DD HH:MI:SS[.FFFFFF]書式の文字列です。範囲は'1753-01-01 00:00:00.000000'から'9999-12-31 23:59:59.999999'です。小数部は0から6桁で指定できます。

C1というCHAR列があり、TIMEを比較する場合は、次の文を実行できます。

SELECT * FROM testable WHERE C1 = TIME '12:00:00'

この例では、C1の値が適切なTIME構文に従っていれば、C1から得られるCHARの各値は、比較の前にTIME値に変換されます。

TimestampLiteral

書式: TIMESTAMP TimestampString

次に例を示します:

TIMESTAMP '2007-01-27 11:00:00.000000'

TIMESTAMPデータ型の場合は、小数フィールドで0から9桁の小数秒がサポートされます。TT_TIMESTAMPデータ型の場合は、小数フィールドで0から6桁の小数秒がサポートされます。

TIMESTAMPキーワードの大文字と小文字は区別されません。

CHARデータ型およびVARCHAR2データ型のDATE/TIME/TIMESTAMPの比較を実行するには、リテラル構文を使用します。

TimesTenでは、ODBCのタイムスタンプ・リテラル構文もサポートされます。次に例を示します:

{ts '9999-12-31 12:00:00'}

IntervalLiteral

書式: INTERVAL [+\-] CharacterString IntervalQualifier

次に例を示します:

INTERVAL '8' DAY

BINARY_FLOAT_INFINITY | BINARY_DOUBLE_INFINITY

正の無限大

INF(正の無限大)は、BINARY_FLOATデータ型およびBINARY_DOUBLEデータ型と互換性があるIEEE浮動小数点値です。定数値BINARY_FLOAT_INFINITYまたはBINARY_DOUBLE_INFINITYを使用して、正の無限大を表します。

-BINARY_FLOAT_INFINITY | -BINARY_DOUBLE_INFINITY

負の無限大

-INF(負の無限大)は、BINARY_FLOATデータ型およびBINARY_DOUBLEデータ型と互換性があるIEEE浮動小数点値です。定数値-BINARY_FLOAT_INFINITYおよび-BINARY_DOUBLE_INFINITYを使用して、負の無限大を表します。

BINARY_FLOAT_NAN |

BINARY_DOUBLE_NAN

非数

NaN(非数)は、BINARY_FLOATデータ型およびBINARY_DOUBLEデータ型と互換性があるIEEE浮動小数点値です。定数値BINARY_FLOAT_NANまたはBINARY_DOUBLE_NANを使用して、NaNを表します。