ヘッダーをスキップ
Oracle® TimesTen In-Memory Database SQLリファレンス
11gリリース(11.2.2)
B66446-05
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

3

式は、次の目的に使用します。

次の項では、TimesTenの式について説明します。

式の指定

には、SQL処理で使用するを指定します。

式は、算術演算子、比較演算子、文字列またはバイナリ演算子、ビット演算子、あるいは第4章「機能」で説明する任意の関数で連結された1つまたは複数のプライマリで構成できます。プライマリは、SQL構文に示された項目から算出される、符号付きまたは符号なしの値です。

SQL構文

{ColumnName | ROWID | {? | :DynamicParameter} |
  Function | Constant | (Expression)}

または

[[+ |-] {ColumnName | SYSDATE | TT_SYSDATE|GETDATE() |
{? | :DynamicParameter} | Function |
Constant | {~ | + | -} Expression}]
 [...]

または

Expression1 [& | | | ^ | + | / | * | - ] Expression2

または

Expression1 | | Expression2

または

Expression
構成要素 説明
+, – 単項プラスと単項マイナス

単項マイナスはプライマリの符号を変更します。デフォルトの設定では、符号は変更しません。

ColumnName 値を取得する列の名前

列名の詳細は、第2章「名前、ネームスペースおよびパラメータ」を参照してください。

ROWID 表に保存される各行の一意のID

ROWID値はROWID擬似列から取得されます。

?

:DynamicParameter

動的パラメータのプレースホルダ

動的パラメータの値は、実行時に設定されます。

Function 計算された値

第4章「関数」を参照してください。

Constant 特定の値

「定数」を参照してください。

(Expression) カッコで囲まれた任意の式
Expression1

Expression2

指定された式

Expression1およびExpression2は、ビット単位演算子とともに使用すると、整数型またはバイナリ型にできます。式のデータ型には互換性が必要です。第1章「データ型」を参照してください。

* 2つのプライマリを乗算します。
/
2つのプライマリを除算します。
+ 2つのプライマリを加算します。

2つのプライマリを減算します。
& 2つのオペランドのビット単位のAND

Expression1およびExpression2の対応するビットがいずれも1の場合にのみ、ビットを1に設定します。ビットが異なるか、いずれも0の場合は、ビットを0に設定します。

| 2つのオペランドのビット単位のOR

Expression1およびExpression2の対応するビットのうち、いずれかまたは両方が1の場合は、ビットを1に設定します。対応するビットの両方が0の場合は、ビットを0に設定します。

~ オペランドのビット単位のNOT

Expressionを1つのみ取り出し、オペランドの各ビットを逆にして、すべての1を0(ゼロ)に、0(ゼロ)を1に変更します。

^ 2つのオペランドの排他OR

Expression1およびExpression2の対応するビットが異なる場合にビットを1に設定し、同じ場合に0(ゼロ)に設定します。一方のビットが0(ゼロ)で他方のビットが1の場合、対応する結果ビットは1に設定されます。それ以外の場合、対応する結果ビットは0(ゼロ)に設定されます。

|| 連結演算子

両方の式が文字列の場合に、Expression1Expression2を連結します。両方の式の値を含む、新しい文字列値を作成します。「CONCAT」も参照してください。


説明

  • 数値間の計算には、算術演算子を使用できます。「数値データ型」を参照してください。

  • 日時値および時間隔型でも、算術演算子を使用できます。日時式の結果は、日時データ型または時間隔データ型です。

  • 文字列値に算術演算子は使用できません。

  • 式の各要素は、次の順序で評価されます。

    • カッコ内の関数および式。

    • 単項プラスと単項マイナス。

    • *および/処理。

    • +および処理。

    • 優先順位が同じ要素については、左から右の順に評価されます。

  • 式をカッコで囲み、評価の順序を制御できます。次に例を示します。

    10 * 2 – 1 = 19 but 10 * (2 – 1) = 10
    
  • 評価される式によっては、データ型の変換、切捨て、アンダーフロー、オーバーフローが発生する場合があります。第1章「データ型」を参照してください。

  • 数値式のいずれかのオペランドがNULLの場合、結果はNULLになります。

  • NVLは、2つのパラメータ(両方とも式で指定)をとるため、TimesTenではどちらの位置にもNULLは使用できません。式にNULL値が含まれる場合、比較演算子や他の条件はNULLと評価されます。NULL値を含む比較演算子や条件の評価の詳細は、第5章「検索条件」を参照してください。TimesTenではNULLを挿入することはできますが、通常、INSERTには特定の値のみが使用され、一般的な式は使用されません。

  • 条件に、別々のROWID等式を指定するか、またはINを使用すると、問合せオプティマイザと実行エンジンで複数のROWID検索が可能です。たとえば、複数の高速ROWID検索は、次のように実行します。

    WHERE ROWID = :v1 OR ROWID = :v2
    

    あるいは、次のように指定します。

    WHERE ROWID IN (:v1, :v2)
    
  • ?または:DynamicParameterは、式の中で動的パラメータとして使用できます。

この例では、任意のSELECT文のWHERE句における動的パラメータを示します。

SELECT * FROM purchasing.orders
  WHERE partnumber = ? AND ordernumber > ?
  ORDER BY ordernumber;

この例では、UPDATE文のWHERE句およびSET句における動的パラメータを示します。

UPDATE purchasing.parts
  SET salesprice = :dynamicparameter1
  WHERE partnumber = :dynamicparameter2;

この例では、DELETE文のWHERE句における動的パラメータを示します。

DELETE FROM purchasing.orderitems
  WHERE itemnumber BETWEEN ? AND ?;

この例では、INSERT文のVALUES句における動的パラメータを示します。この例では、?:dynamicparameterの両方をpurchasing.orderitems表の2番目と4番目の列の両方に対応する:dynamicparameter1で使用します。そのため、この式には、2番目と4番目の列の両方に使用する2番目のパラメータを使用して、4つの動的パラメータのみを渡す必要があります。

INSERT INTO purchasing.orderitems VALUES  
   (?,:dynamicparameter1,
      :dynamicparameter2,
      :dynamicparameter1,?);

この例には、?および:dynamicparameterの両方を同じSQL文で使用できることと、両方のタイプの動的パラメータを繰り返すことの意味上の違いが示されています。

ビット単位演算子の例を次に示します。

Command> SELECT 0x183D & 0x00FF FROM dual;
< 003D >
1 row found.
Command> SELECT ~255 FROM dual;
< -256 >
1 row found.
Command> SELECT 0x08 | 0x0F FROM dual;
< 0F >
1 row found.

副問合せ

TimesTenでは、検索条件のINSERT...SELECT文、CREATE VIEW文またはUPDATE文、およびUPDATE文のSET句で、導出された表として副問合せがサポートされます。サポートされるのは、表の副問合せおよびスカラー副問合せです。TimesTenでは、行の副問合せはサポートされません。副問合せでは、HAVING句または結合表を使用して集計を指定できます。副問合せは相関も可能です。

SQL構文

[NOT] EXISTS | [NOT] IN (Subquery)
Expression {= | <> | > | >= | < | <= } [ANY | ALL] (Subquery)
Expression [NOT] IN (ValueList | Subquery)

ValueListは定数式のリストです。各定数式は、定数値または定数値になる式(数字、文字列、日付など)を指定します。バインドされた値(?または:DynamicParameter)、NULL、および定数値を返す関数のコールのサポートが含まれます。

説明

TimesTenでは、各項で説明した特性を持つ問合せがサポートされます。

表の副問合せ

  • 副問合せは、マテリアライズド・ビューを作成する文を除き、任意の文のWHEREまたはHAVING句に指定できます。表の副問合せは、1つの条件に1つのみ指定できます。これらの条件は、WHERE句やHAVING句、WHERE句やHAVING句内のOR式または結合された表のON句に指定できます。CASE式、マテリアライズド・ビューまたは外部結合のために+演算子を使用するHAVING句には指定できません。

  • 副問合せは、EXISTSまたはNOT EXISTS条件、ANYまたはALLを使用する限定条件または比較条件に指定できます。比較条件および限定条件の両方に使用できる演算子は、=<><=>=<>です。UNIQUEまたはNOT UNIQUE演算子を使用して、副問合せを外部問合せに連結することはできません。

  • 限定条件または比較条件に指定できる副問合せは1つのみです。副問合せは、条件の右側のオペランドまたは左側のオペランドとして指定します。両方には指定しません。

  • 副問合せにORDER BY句を指定することはできません。

  • FIRST NumRowsは、副問合せの文ではサポートされていません。

  • 限定条件または比較条件に指定された問合せでは、基礎となるSELECTの選択リストは単一の式にする必要があります。比較条件で指定される問合せの場合に、基礎となるSELECTが単一の行を戻すときは、その戻り値が選択結果になります。基礎となるSELECTが行を戻さない場合、戻り値はNULLです。副問合せが複数の行を戻す場合はエラーになります。

スカラー副問合せ

スカラー副問合せは単一の値を返します。

  • 外部問合せの各行に1行のみを戻すことを、コンパイル時にオプティマイザが検出できないような条件を含むスカラー副問合せは、検証できません。OR式にこのような副問合せを指定することはできません。

次に、1件以上の未発送の発注を含む顧客リストの副問合せの例を示します。

SELECT customers.name FROM customers
  WHERE EXISTS (SELECT 1 FROM orders
    WHERE customers.id = orders.custid
    AND orders.status = 'unshipped');

SELECT customers.name FROM customers
  WHERE customers.id = ANY 
    (SELECT orders.custid FROM orders
  WHERE orders.status = 'unshipped');

SELECT customers.name FROM customers 
  WHERE customers.id IN 
    (SELECT orders.custid FROM orders 
  WHERE orders.status = 'unshipped');

この例では、発注日と同じ日付に発送されたアイテムをリストします。

SELECT line_items.id FROM line_items 
  WHERE line_items.ship_date = 
    (SELECT orders.order_date FROM orders 
  WHERE orders.id = line_items.order_id);

定数

定数はリテラル値です。

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進リテラルとして受け入れません。

sDateString 一重引用符(')で囲まれた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'までです。

TimesTen型モードを使用している場合、DateStringの詳細は、Oracle TimesTen In-Memory Databaseリリース6.0.3のドキュメントを参照してください。

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ドキュメントを参照してください。

TimesTen型モードを使用している場合、DateLiteralの詳細は、Oracle TimesTen In-Memory Databaseリリース6.0.3のドキュメントを参照してください。

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値に変換されます。

TimesTen型モードを使用している場合、TimestampStringの詳細は、Oracle TimesTen In-Memory Databaseリリース6.0.3のドキュメントを参照してください。

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'}

TimesTen型モードを使用している場合、TimestampLiteralの詳細は、Oracle TimesTen In-Memory Databaseリリース6.0.3のドキュメントを参照してください。

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を表します。


書式モデル

書式モデルは、文字列に格納された日時および数値データの書式を示す文字リテラルです。文字列を日付または数値に変換する場合は、書式モデルによって、TimesTenでの文字列の解釈方法が決まります。

この項では、次の書式モデルについて説明します。

数値書式モデル

数値書式モデルは、次の関数で使用します。

  • NUMBERBINARY_FLOATまたはBINARY_DOUBLEデータ型の値をVARCHAR2データ型に変換するTO_CHAR関数。

  • CHARまたはVARCHAR2データ型の値をNUMBERデータ型に変換するTO_NUMBER関数。

デフォルトのamerican_america NLS言語および地域の設定が使用されます。

数値書式モデルは、1つ以上の数値書式要素で構成されます。次の表に、数値書式モデルの要素を示します。数値書式モデルに書式要素MISまたはPRが指定されないかぎり、負の戻り値の先頭には自動的に負の符号が付けられ、正の戻り値の先頭には空白が付けられます。

表3-1 数値書式要素

要素 説明

,(カンマ)

9,999

指定された位置にカンマを戻します。1つの数値書式モデルに複数のカンマを指定できます。

制限:

  • 数値書式モデルでは、先頭をカンマ要素にすることはできません。

  • 数値書式モデルでは、小数点文字(ピリオド)の右側にカンマは使用できません。

.(ピリオド)

99.99

指定された位置に小数点(ピリオド(.))を戻します。

制限:

1つの書式モデルで指定できるピリオドは1つのみです。

$


$9999

先行ドル記号を含む値を戻します。

0

0999

9990

先行0(ゼロ)を戻します。

後続0(ゼロ)を戻します。

9

9999

指定された桁数の値を戻します。正の場合は先行空白が含まれ、負の場合は先行マイナスが含まれます。

固定小数点数の整数部分の場合、先行0(ゼロ)に対して空白を戻します。ただし、値0(ゼロ)に対しては0(ゼロ)を戻します。

B

B9999

固定小数点数の整数部分が0(ゼロ)の場合、空白を戻します(書式モデル内の0(ゼロ)には関係ありません)。

C

C999

指定された位置にISO通貨記号を戻します。

D

99D99

指定された位置に小数点文字を戻します。デフォルトはピリオド(.)です。

制限:

1つの数値書式モデルで指定できる小数点文字は1つのみです。

EEEE

9.9EEEE

科学表記法で値を戻します。

G

9G999

指定された位置にグループ・セパレータを戻します。1つの数値書式モデルに複数のグループ・セパレータを指定できます。

制限:

数値書式モデルでは、小数点文字(ピリオド)の右側にグループ・セパレータは使用できません。

L

L999

指定した位置にローカル通貨記号を戻します。

MI

999MI

後続のマイナス符号(-)を含む負の値を戻します。

後続の空白を含む正の値を戻します。

制限:

MI書式の要素は、数値書式モデルの末尾にのみ使用できます。

PR

999PR

山カッコ(< >)の中に負の値を戻します。

先行および後続の空白を含む正の値を戻します。

制限:

PR書式の要素は、数値書式モデルの末尾にのみ使用できます。

RN

RN

値を大文字のローマ数字として戻します。

rn

rn

値を小文字のローマ数字として戻します。

1から3999までの整数を値として指定できます。

S

S9999

先行のマイナス符号(-)を含む負の値を戻します。

先行のプラス符号(+)を含む正の値を戻します。

S

9999S

後続のマイナス符号(-)を含む負の値を戻します。

後続のプラス符号(+)を含む正の値を戻します。

制限:

S書式の要素は、数値書式モデルの先頭または末尾にのみ使用できます。

TM

TM

テキストの最小数値書式モデルは、文字の最小数を(10進出力で)戻します。この要素の大文字と小文字は区別されません。

デフォルトはTM9で、出力が64文字を超えないかぎり、固定表記法で数値を戻します。出力が64文字を超える場合は、TimesTenによって自動的に科学表記法で数値が戻されます。

制限:

  • この要素の前に他の要素を指定することはできません。

  • この要素の後に、9を1つか、Eを1つか、または(e)を指定できますが、これらを組み合せることはできません。次の文は、エラーを戻します。

    SELECT TO_NUMBER (1234, 'TM9e') FROM dual;

U

U9999

指定された位置にユーロまたは他の二重通貨記号を戻します。

V

999V99

10nを乗算した値を戻します(この値は必要に応じて丸められます)。nVに続く9の数です。

X

XXXX

指定された桁数の16進値を戻します。指定された数値が整数でない場合は、TimesTenによって整数に丸められます。

制限:

  • この要素は、正の値または0(ゼロ)のみを受け入れます。負の値はエラーを戻します。

  • この要素の前には、先行の0(ゼロ)を戻す0(ゼロ)またはFMのみを指定できます。その他の要素はすべてエラーを戻します。Xに0(ゼロ)もFMも指定しない場合は、常に戻り値に先行空白が含まれます。


日時書式モデル

日時書式モデルは、次の関数で使用します。

  • 日時値のデフォルト書式以外の文字値を変換するTO_CHAR関数またはTO_DATE関数。

  • デフォルト書式以外の日時値を文字列に変換するTO_CHAR関数。

日時書式モデルの合計の長さは、22文字を超えることができません。

デフォルトのamerican_america NLS言語および地域の設定が使用されます。

日時書式モデルは、表3-2に示す、1つ以上の日時書式要素で構成されます。

表3-2 日時書式要素

要素 説明

-/,.;:"text"

句読点および引用符付きテキストは、結果で複製されます。

AD

A.D.

ピリオド付きまたはピリオドなしで西暦を示します。

AM

A.M.

ピリオド付きまたはピリオドなしで午前を示します。

BC

B.C.

ピリオド付きまたはピリオドなしで紀元前を示します。

D

曜日(1から7)

DAY

曜日。最大幅の名前を表示するために空白で埋められます。

DD

日付(1から31)

DDD

通日

DL

長い日付書式

デフォルトのAMERICAN_AMERICAロケールの場合、これは、書式'fmDay, Month dd, yyyy'を指定することと同じになります。

制限:

この書式は、空白で区切られたTS要素でのみ指定できます。

DS

短い日付書式

デフォルトのAMERICAN_AMERICAロケールの場合、これは、書式'MM/DD/RRRR'を指定することと同じになります。

制限:

この書式は、空白で区切られたTS要素でのみ指定できます。

DY

曜日の省略名

FM

先行または後続の空白はありません。

FX

文字データと書式モデルが完全に一致します。

HH

時間(1から12)

HH24

時間(0から23)

J

ユリウス日

紀元前4712年1月1日からの日数です。Jで指定される数値は整数である必要があります。

MI

分(0から59)

MM

月(01から12。1月=01)

MON

月の省略名

MONTH

月の名前。最大幅の名前を表示するために空白で埋められます。

RM

ローマ数字での月(IからXII。1月=I)

RR

20世紀の年(21世紀に2桁のみを使用)

RRRR

年を丸めます。

4桁または2桁で入力できます。2桁の場合、RRと同じ値が返されます。この機能を使用しない場合は、年を4桁で入力します。

SS

秒(0から59)

SSSSS

午前0時以降の秒数(0から86399)

TS

短い時間書式

制限:

この書式は、空白で区切られたDL要素またはDS要素でのみ指定できます。

X

ローカル基数文字

次に例を示します。

'HH:MI:SSXFF'

Y,YYY

指定の位置にカンマを付けた年

YYYY

SYYYY

年(4桁)

Sによって、紀元前の日付の前にマイナス符号が付けられます。

YYY

YY

Y

年の下3桁、下2桁または下1桁


ROUNDおよびTRUNC日付関数の書式モデル

次の表に、ROUNDおよびTRUNC日付関数に使用可能な書式モデルと、日付が丸められる場合や切り捨てられる場合の単位を示します。デフォルトのモデルDDでは、時刻部分が午前0時に丸められるか切り捨てられた日付が戻されます。

書式モデル 丸め単位または切捨て単位
CC

SCC

世紀

4桁の年の下2桁が01から99(01および99を含む)の場合、世紀はその年の上2桁に1を加えた値になります。

4桁の年の下2桁が00の場合、世紀はその年の上2桁と等しい値になります。たとえば、2002は21を返し、2000は20を返す。

SYYYY

YYYY

YEAR

SYEAR

YYY

YY

Y

年(7月1日で切上げ)
IYYY

IYY

IY

I

ISO年
Q 四半期(四半期の2番目の月の16日で切上げ)
MONTH

MON

MM

RM

月の名前(16日で切上げ)
WW 対象となる年の最初の日と同じ曜日
IW ISO週の最初の日と同じ曜日(月曜日)
W 対象となる月の最初の日と同じ曜日
DDD

DD

J

通日
DAY

DY

D

開始曜日
HH

HH12

HH24

時刻
MI

TimesTen日時データ型TO_CHARの書式モデル

この書式モデルは、TO_CHAR関数を呼び出してTT_TIMESTAMPまたはTT_DATEの日時値を変換する場合に使用します。また、TO_CHAR関数を呼び出してNUMBERまたはORA_FLOAT以外の任意の数値を変換する場合にも使用します。

  • 指定した書式に数値が適合しない場合、値は切り捨てられます。

  • 書式文字列は、50文字以内で指定します。

  • Dの結果は、常に小数点になります。NLSパラメータを使用して、その値を変更することはできません。

  • 1e-126未満または1e126より大きい絶対値を含む浮動小数点を、TO_CHAR関数への入力として指定した場合、エラーが発生します。

書式 説明
DD 日付(1から31)
MM 月(1から12)
MON 月(3文字の接頭辞)
MONTH 月(空白が埋め込まれた9文字の正式名)
YYYY 年(4桁)
Y,YYY 年(カンマ付き)
YYY 年(末尾3桁)
YY 年(末尾2桁)
Y 年(末尾1桁)
Q 四半期
HH 時刻(1から12)
HH12 時刻(1から12)
HH24 時刻(0から23)
MI 分(0から59)
SS 秒(0から59)
FF 6桁の精度の秒の小数部
FFn nで指定される精度の秒の小数部
AM 正午標識
A.M. 正午標識
PM 正午標識
P.M. 正午標識
- /  ,  . ; : 出力される記号
"text" 出力されるテキスト
9
0 先行または後続0(ゼロ)
. 小数点
, カンマ
EEEE 科学表記法
S 符号モード
B 空白モード

数字がない場合、文字列は空白で埋められます。

FM 非空白モード(埋込みモード)

この要素が使用される場合、後続または先行の空白は削除されます。

$
先行ドル記号

CASE

条件付きの値を指定します。単純なCASE式と検索対象のCASE式がサポートされています。CASE式は、式を任意の場所で指定でき、必要に応じて何度でも使用できます。

一連のIF文を使用するかわりに、CASE式を使用すると、条件が満たされた場合に適切な値を返す一連の条件を使用できます。CASE式を使用すると、問合せを簡略化し、効率のよいコードを記述できます。

SQL構文

検索対象のCASE式の構文は、次のとおりです。

CASE
  {WHEN SearchCondition THEN Expression1}[…] 
   [ELSE Expression2]
END

単純なCASE式の構文は、次のとおりです。

CASE Expression 
  {WHEN CompExpression THEN Expression1}[…]
   [ELSE Expression2] 
END

パラメータ

CASEには、次のパラメータがあります。

パラメータ 説明
WHEN SearchCondition 検索条件を指定します。この句は副問合せを指定できません。
WHEN CompExpression 比較するオペランドを指定します。
Expression CompExpressionと比較する最初のオペランドを指定します。
THEN Expression1 結果の式を指定します。
ELSE Expression2 条件を満たさない場合の結果の式を指定します。ELSE句を指定しないと、TimesTenによってELSE NULL句が式に追加されます。

説明

CASE式は、INSERT文の値の句の中では指定できません。

色の値を指定する検索対象のCASE文を指定するには、次の文を使用します。

SELECT CASE 
  WHEN color=1 THEN 'red' 
  WHEN color=2 THEN 'blue' 
  ELSE 'yellow' 
END FROM cars;

色の値を指定する単純なCASE文を指定するには、次のようにします。

SELECT CASE color 
  WHEN 1 THEN 'red' 
  WHEN 2 THEN 'blue' 
  ELSE 'yellow' 
END FROM cars;

ROWID

TimesTenでは、表に保存される各行にrowidと呼ばれる一意のIDが割り当てられます。このROWIDのデータ型はROWIDです。ROWIDは、ROWID擬似列を問い合せることで確認できます。

ROWID擬似列は実際の列ではないため、データベース領域は不要です。また、更新したり、索引を作成したり、削除することはできません。

ROWID値は表に行が存在する間は使用されますが、元の行が削除されると、そのROWIDはシステムによって違う行に割り当てられる場合があります。0(ゼロ)はROWIDに使用できません。

ROWIDはリカバリ、バックアップおよびリストア処理を行っても使用できます。ただし、レプリケーション、ttMigrateまたはttBulkCpの処理を行うと使用できなくなります。

ROWIDの詳細は、「式の指定」を参照してください。ROWIDデータ型の詳細は、「ROWIDデータ型」を参照してください。

ROWNUM擬似列

問合せによって戻される行ごとに、ROWNUM擬似列によって、行が選択された順序を示す数値が戻されます。最初に選択された行にはROWNUMとして1が、2番目に選択された行にはROWNUMとして2が割り当てられ、以降も同様の割当てが行われます。

次の例に示すようにROWNUMを使用して、問合せによって戻される行数を制限します。

SELECT * FROM employees WHERE ROWNUM < 10;

行が選択された順序は、使用している索引および結合順序によって異なります。ORDER BY句を指定すると、ソートが行われる前にROWNUMが割り当てられます。ただし、ORDER BY句を指定すると、使用している索引および結合順序が変更される可能性があります。選択された行の順序が変更されると、選択された各行に関連付けられているROWNUM値も変更される可能性があります。

たとえば、別の索引が使用された場合、次の問合せは、以前に実行した問合せとは異なる従業員を戻す可能性があります。

SELECT * FROM employees WHERE ROWNUM < 10 ORDER BY last_name;

比較条件「ROWNUM値>正の整数」は、常に偽となるため注意してください。たとえば、次の問合せでは行が戻されません。

SELECT * FROM employees WHERE ROWNUM > 1;

ROWNUMを使用して一意の値を表の各行に割り当てます。次に例を示します。

UPDATE my_table SET column1 = ROWNUM;

問合せにFIRST NumRowsまたはROWS m TO nが含まれている場合は、ROWNUMを使用して戻される行の数を制限しないでください。たとえば、次の問合せでは、エラー・メッセージが戻されます。

SELECT FIRST 2 * FROM employees WHERE ROWNUM <1 ORDER BY employee_id;
2974: Using rownum to restrict number of rows returned cannot be combined with 
first N or rows M to N