主コンテンツへ
Oracle® TimesTen In-Memory Database SQLリファレンス
リリース18.1
E98627-06
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

4 関数

関数は、データを操作し、結果を戻します。この章には、すべての関数のアルファベット順のリストに加え、次の関数の概要も含まれています。

数値関数

数値ファンクションは入力として数値を受け取り、結果として数値を戻します。数値関数は、次のとおりです。

ビット単位の関数

ビット単位の関数には次のものがあります。

文字値を戻す文字関数

文字値を戻す文字関数は、次のとおりです。

数値を戻す文字関数

数値を戻す文字関数は、次のとおりです。

文字列関数

TimesTenでは、次の文字列関数がSELECT文でサポートされています。

文字列関数を指定する選択済の値によって、SELECTがマテリアライズされます。これによって時間と領域の両方においてオーバーヘッドが発生します。

LOB関数

LOB関数は、TimesTen Scaleoutではサポートされていません。

次のEMPTY_*関数は、LOBをNULL以外の値に初期化します。

次のTO_*関数は、特定のデータ型を任意のLOBデータ型に変換します。

NLS文字セット関数

NLS文字セット関数は、指定された文字セットに関する情報を戻します。

一般的な比較関数

一般的な比較関数は、入力式の比較を実行します。一般的な比較ファンクションを次に示します。

NULL関連の比較関数

NULL関連関数は、式をNULLと比較するか、式の比較に基づいてNULLを返します。NULL関連の比較関数は次のとおりです。

変換関数

変換ファンクションは、あるデータ型から他のデータ型に値を変換します。一部の変換関数の名前は、TO_datatypeの表記規則に従います。

SQL変換関数は次のとおりです。

日時関数

日時データ型の詳細な説明は、「日時データ型」を参照してください。

日時関数は次のとおりです。

集計関数

集計関数は、グループ内のすべての行で特定の操作を実行します。集計ファンクションは、単一行ではなく行のグループに基づいて1つの結果行を戻します。通常、SELECT文のGROUP BY句とともに使用され、戻される列はグループに分かれます。GROUP BY句を指定しないと、選択リストの集計関数が問合せ対象の表またはビューのすべての行に適用されます。

選択リストまたはHAVING句に集計関数を指定できます。詳細は、「SELECT」を参照してください。式の値は、WHERE句の条件を満たす各行を使用して計算されます。

単一の引数をとる多くの集計関数では、ALLキーワードまたはDISTINCTキーワードを使用できます。デフォルトは、ALLです。ALLまたはDISTINCTを使用できるかどうかについては、各集計関数の構文を参照してください。

  • DISTINCTを集計関数で指定すると、引数式の重複を排除した値のみが考慮されます。

  • ALLを集計関数で指定すると、重複を含むすべての値が考慮されます。

たとえば、1、1、1、3の平均値はDISTINCTでは2となります。これらの結果のALLの平均は、1.5になります。

GROUP BY句内のROLLUPおよびCUBE句は、列の値がNULL値で表される超集合行を生成します。超集合行はNULLで示されるため、NULL値および超集合結果を含む問合せ結果を区別することが困難な場合があります。さらに、戻された小計内で、指定された小計の正確な集計レベルをどのように探し出すかということも問題です。この問題を解決するには、GROUP_IDGROUPINGおよびGROUPING_ID関数を使用します。

次の内容の詳細は、第1章「データ型」を参照してください。

  • 集計関数の評価において実行される切捨てとデータ型の変換。

  • 数値引数を含む集計関数の精度とスケール。

  • 集計関数の結果のデータ型の制御。

集計関数のリストは、次のとおりです。

分析関数

分析関数は行のグループに基づいて集計値を計算します。集計関数との違いは、グループごとに複数の行を戻す点です。行のグループをウィンドウといい、analytic_clauseで定義されます。

分析関数は、問合せで最後に実行される演算(最後のORDER BY句を除く)の集合です。すべての結合、WHERE句、GROUP BY句およびHAVING句は、分析関数が処理される前に実行されます。最後のORDER BY句は、分析関数の結果を順序変更するために使用されます。分析関数は、問合せまたは副問合せの選択リスト、およびORDER BY句に指定できます。

分析関数を使用すると、問合せの結果セットをパーティションと呼ばれる行グループに分割できます。列または式でパーティションを定義できます。問合せ結果セットは、すべての行を持つ1つのパーティション、少数の大きなパーティション、またはそれぞれが数行しか持たない多数の小さなパーティションに分割可能です。

パーティションの行ごとに、スライディング・ウィンドウを定義できます。このウィンドウで、カレント行の計算に使用される行の範囲が決まります。ウィンドウ・サイズは、行の物理的な数に基づきます。ウィンドウには開始行および終了行があり、片方の端または両方の端で移動できます。たとえば、累積SUM関数を定義したウィンドウには、パーティションの最後の行に固定された開始行が含まれ、終了行は開始点からパーティションの最後の行までスライドします。反対に、移動平均を定義したウィンドウには開始点と終了点の両方のスライドが含まれます。

ウィンドウは、パーティションのすべての行、またはパーティション内の1行と同じ大きさに設定できます。

各関数には、複数の順序式を指定できます。これは、2番目の式が最初の式にある同一値との間の関連性を変換できるため、値をランク付けする関数を使用する場合に有効です。

通常、分析ファンクションは、累積集計、移動集計、センター集計およびレポート集計の実行に使用されます。

制限:

  • 分析関数は、マテリアライズド・ビューではサポートされていません。

分析関数のリストは、次のとおりです。アスタリスク(*)付きの関数は、WindowingClauseをサポートしています。

SQL構文

分析関数の構文:

AnalyticFunctionName ([arguments]) OVER ([AnalyticClause])

AnalyticClause::= QueryPartitionClause [ORDER BY OrderByClause [,...]
                                          [WindowingClause]] |
                  ORDER BY OrderByClause [,...] [WindowingClause]

QueryPartitionClause::= PARTITION BY { Expression[,Expression]... |
                                      (Expression [,Expression]...) 
                                     }

OrderByClause::= Expression [ASC|DESC] [NULLS {FIRST|LAST}]

WindowingClause::= ROWS { BETWEEN StartPoint AND EndPoint |
                          StartPoint
                        }

StartPoint::= UNBOUNDED PRECEDING | CURRENT ROW | PosNumConstantExpr 
                                                    { PRECEDING | FOLLOWING }

EndPoint::= UNBOUNDED FOLLOWING | CURRENT ROW | PosNumConstantExpr
                                                   { PRECEDING | FOLLOWING }

パラメータ

パラメータ 説明
AnalyticFunctionName 分析関数の名前。
arguments 分析関数の引数。引数の数は分析関数によって異なります。関数に対する引数の詳細は、特定の関数を参照してください。
OVER ( [ AnalyticClause ] ) 関数が分析関数であることを示します。この句は、FROMWHEREGROUP BYおよびHAVING句の後に計算されます。

AnalyticClauseを指定しない場合、分析関数は、パーティション化や順序変更を行わず、またはウィンドウを使用せずに結果セット全体で評価されます。

QueryPartitionClause AnalyticClauseで使用されるオプションの句。PARTITION BY句で示されます。指定すると、問合せ結果セットがExpressionリストに基づいてグループにパーティション化されます。この句を省略すると、ファンクションは問合せ結果セットのすべての行を単一のグループとして扱います。

同じまたは異なるPARTITIONキーを使用して、同じ問合せに複数の分析関数を指定できます。

Expressionに有効な値は、定数、列、非分析関数または関数式です。

ORDER BY OrderByClause AnalyticClauseで使用されるオプションの句。この句を使用して、パーティション内のデータの順序を指定します。Expressionは、列の名前または位置には指定できません。

各キーがExpressionで定義され、順序付けシーケンスで修飾された複数キーのパーティション内での値を順序付けできます。

分析関数は、この句で指定された順序で動作します。ただし、この句は、結果の順序は保証しません。最終結果の順序を保証するには、問合せのORDER BY句を使用してください。

ORDER BY OrderByClauseを指定し、QueryPartitionClauseまたはWindowingClauseのいずれかを指定しない場合、デフォルト・ウィンドウはROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROWになります。

ORDER BY OrderByClauseを指定しないと、順序は不確定になります。

ASC | DESC 順序付けシーケンス(昇順または降順)を指定します。デフォルトはASCです。

句はオプションです。

NULLSFIRST|NULLSLAST NULL値を含む行を、順序付けシーケンスの最初に指定するか最後に指定するかを指定します。NULLS LASTは、昇順のデフォルトです。NULLS FIRSTは、降順のデフォルトです。

句はオプションです。

WindowingClause 句は、ROWSキーワードで示されます。物理単位(行)で表されるウィンドウを行ごとに指定します。ウィンドウは、関数結果の計算に使用されます。関数は、ウィンドウのすべての行に適用されます。ウィンドウは、問合せ結果セット内またはパーティションの上から下まで移動します。

ORDER BY OrderByClauseを指定しないと、WindowingClauseを指定できません。

分析関数が戻す値は、順序付けシーケンスの結果が一意の順序でなければ非決定的な結果を生成することがあります。この場合、OrderByClauseに複数の列を指定して、順序を一意にします。

WindowingClauseを使用できる関数のリストは、「分析関数」を参照してください。

BETWEEN...AND BETWEEN...AND句を使用すると、ウィンドウに開始点(StartPoint)および終了点(EndPoint)を指定できます。

BETWEEN...AND句を省略して終了点を1つ指定しようとすると、TimesTenはこの終了点を開始点とみなし、デフォルトでカレント行を終了点に指定します。

StartPoint 有効な値は、UNBOUNDED PRECEDINGCURRENT ROWPosNumConstantExprPRECEDINGまたはPosNumConstantExpr FOLLOWINGです。

PosNumConstantExprは、正の定数値または結果が正の整数値になる式のいずれかである必要があります。

EndPoint 有効な値は、UNBOUNDED FOLLOWINGCURRENT ROWPosNumConstantExpr PRECEDINGまたはPosNumConstantExpr FOLLOWINGです。

PosNumConstantExprは、正の定数値または結果が正の整数値になる式のいずれかである必要があります。

UNBOUNDED PRECEDING UNBOUNDED PRECEDINGを使用して、パーティションの最初の行でウィンドウが開始することを示します。

終了点として使用することはできません。

UNBOUNDED FOLLOWING UNBOUNDED FOLLOWINGを使用して、パーティションの最後の行でウィンドウが終了することを示します。

開始点として使用することはできません。

CURRENT ROW CURRENT ROWが開始点のとき、ウィンドウがカレント行から始まることを指定します。この場合、PosNumConstantExpr PRECEDINGを終了点にすることはできません。

CURRENT ROWが終了点のとき、ウィンドウがカレント行で終了することを指定します。この場合、PosNumConstantExpr FOLLOWINGを開始点にすることはできません。

PosNumConstantExpr {PRECEDING | FOLLOWING } PosNumConstantExpr FOLLOWINGが開始点の場合、終了点はPosNumConstantExpr FOLLOWINGまたはUNBOUNDED FOLLOWINGである必要があります。PosNumConstantExpr PRECEDINGが終了点の場合、開始点はPosNumConstantExpr PRECEDINGまたはUNBOUNDED PRECEDINGである必要があります。

終了点PosNumConstantExprは、開始点PosNumConstantExprよりも大きいか同等である必要があります。

PosNumConstantExprは、正の定数値または結果が正の整数値になる式のいずれかである必要があります。


エンコーディング関数およびデコーディング関数

エンコード関数およびデコード関数を使用すると、データを検査およびデコードできます。

ユーザー/セッション関数

TimesTenは、次のユーザー/セッション関数をサポートします。

TimesTen Scaleoutの関数

ELEMENTIDCOMPUTE SQL関数は、TimesTen Scaleoutでのみサポートされています。

ABS

ABS関数は、Expressionの絶対値を戻します。

SQL構文

ABS(Expression)

パラメータ

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

パラメータ 説明
Expression オペランドまたは列には、任意の数値データ型を指定できます。Expressionの絶対値が戻されます。

説明

  • ExpressionNUMBER型の場合、戻されるデータ型は最大の精度およびスケールを持つNUMBERです。それ以外の場合、ABSでは、Expressionの数値データ型と同じデータ型が戻されます。

  • Expressionの値がNULLの場合、NULLが戻されます。Expressionの値が-INFの場合、INFが戻されます。

abstestを作成してBINARY_FLOATおよびTT_INTEGER型の列を定義します。値-BINARY_FLOAT_INFINITYおよび-10を挿入します。ABSをコールして絶対値を戻します。戻り値はINFおよび10になります。

Command> CREATE TABLE abstest (col1 BINARY_FLOAT, col2 TT_INTEGER);
Command> INSERT INTO abstest 
         VALUES (-BINARY_FLOAT_INFINITY, -10);
1 row inserted.
Command> SELECT ABS (col1) FROM abstest;
< INF >
1 row found.
Command> SELECT ABS (col2) FROM abstest;
< 10 >
1 row found.

ACOS

ACOS関数は、Expressionのアーク・コサインを返します。

SQL構文

ACOS(Expression)

パラメータ

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

パラメータ 説明
Expression オペランドまたは列は、任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。

説明

  • Expressionは、-1から1の範囲内である必要があります。ACOSは、0からpiまでの範囲の値をラジアンで表して返します。

  • ExpressionNUMBER型の場合、戻されるデータ型はNUMBERです。他のすべての数値データ型の場合、戻されるデータ型はBINARY_DOUBLEです。

  • Expressionの値がNULLの場合、NULLが戻されます。

ACOS関数を使用して、.3のアーク・コサインを返します。

Command> SELECT ACOS(.3) "Arc cosine of .3" FROM dual;
< 1.2661036727794991112593187304122222822 >
1 row found.

ADD_MONTHS

ADD_MONTHS関数は、日付dateに月数integerを加算した値を戻します。

SQL構文

ADD_MONTHS(Date,Integer)

パラメータ

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

パラメータ 説明
Date 日時値、または日時値に変換可能な任意の値。
Integer 整数値、または整数値に変換可能な値。

説明

  • 戻り型は、dateのデータ型にかかわらず常にDATEです。サポートされるデータ型は、DATETIMESTAMPORA_TIMESTAMPおよびORA_DATEです。

  • データ型TIMETT_TIMETT_DATEおよびTT_TIMESTAMPはサポートされていません。

  • dateが月の最終日である場合、または結果となる月の日数がdateの日付部分より少ない場合、結果となる月の最終日が戻されます。それ以外の場合は、dateと同じ日付部分が結果として戻されます。

ADD_MONTHS関数をコールして、2007年1月31日という日付に1か月を加算します。2月の最終日が戻されます。

Command> SELECT ADD_MONTHS (DATE '2007-01-31', 1) FROM dual;
< 2007-02-28 00:00:00 >
1 row found.

dateTIMESTAMP型の場合、ADD_MONTHSによりDATEデータ型が戻されます。

Command> DESCRIBE SELECT ADD_MONTHS (TIMESTAMP '2007-01-31 10:00:00', 1) 
         FROM dual;
Prepared Statement:
  Columns:
    EXP                             DATE NOT NULL

HRスキーマを使用して、employee_idlast_nameおよびhire_dateを表示する、employees表の先頭の5行を選択します。CREATE TABLE ... AS SELECT文を使用して新しい表temp_hire_dateを作成します。ADD_MONTHSをコールして元のhire_dateに23か月を加算します。

Command> SELECT FIRST 5 employee_id, last_name, hire_date FROM employees;
< 100, King, 1987-06-17 00:00:00 >
< 101, Kochhar, 1989-09-21 00:00:00 >
< 102, De Haan, 1993-01-13 00:00:00 >
< 103, Hunold, 1990-01-03 00:00:00 >
< 104, Ernst, 1991-05-21 00:00:00 >
5 rows found.
Command> CREATE TABLE temp_hire_date (employee_id, last_name,
           hire_date) AS SELECT FIRST 5 employee_id, last_name,
        ADD_MONTHS (hire_date, 23) FROM employees;
5 rows inserted.
Command> SELECT * FROM temp_hire_date;
< 100, King, 1989-05-17 00:00:00 >
< 101, Kochhar, 1991-08-21 00:00:00 >
< 102, De Haan, 1994-12-13 00:00:00 >
< 103, Hunold, 1991-12-03 00:00:00 >
< 104, Ernst, 1993-04-21 00:00:00 >
5 rows found.

ASCIISTR

ASCIISTR関数は、すべての文字セットでの文字列または文字列に解決される式のいずれかを引数とし、データベース文字セットのASCIIバージョンの文字列を戻します。非ASCII文字はUnicodeエスケープに変換されます。

SQL構文

ASCIISTR ([N]'String')

パラメータ

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

パラメータ 説明
[N]'String' ASCIISTR関数に渡される文字列に対して評価する文字列または式。文字列は任意の文字セットで指定できます。値は、CHARVARCHARVARCHAR2NCHARNVARCHARNVARCHAR2CLOBまたはNCLOBデータ型を含む、サポートされているデータ型になります。TimesTenデータ型およびOracle Databaseデータ型の両方がサポートされます。データベース文字セットのASCIIバージョンの文字列が戻されます。文字列をUTF-16書式で渡す場合は、Nを指定します。

説明

ASCIISTR関数を使用すると、データベース文字セット以外の文字列値の表現を確認できます。

次の例では、ASCIISTR関数を呼び出し、'Aäa'を引数としてUTF-16書式で渡します。ASCIIバージョンはWE8ISO8859P1文字セットで戻されます。非ASCII文字äは、Unicodeエンコード値に変換されます。

Command> connect "dsn=test; ConnectionCharacterSet= WE8ISO8859P1";
Connection successful: DSN=test;UID=user1;DataStore=/datastore/user1/test;
DatabaseCharacterSet=WE8ISO8859P1;
ConnectionCharacterSet=WE8ISO8859P1;PermSize=32;
(Default setting AutoCommit=1)
Command> SELECT ASCIISTR (n'Aäa') FROM dual;
< A\00E4a >
1 row found.

ASIN

ASIN関数は、Expressionのアーク・サインを返します。

SQL構文

ASIN(Expression)

パラメータ

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

パラメータ 説明
Expression オペランドまたは列は、任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。

説明

  • Expressionは、-1から1の範囲内である必要があります。ASINは、-pi/2からpi/2までの範囲の値をラジアンで表して返します。

  • ExpressionNUMBER型の場合、戻されるデータ型はNUMBERです。他のすべての数値データ型の場合、戻されるデータ型はBINARY_DOUBLEです。

  • Expressionの値がNULLの場合、NULLが戻されます。

ASIN関数を使用して、.3のアーク・サインを返します。

Command> SELECT ASIN(.3) "Arc sine of .3" FROM dual;
< .3046926540153975079720029612275291599 >
1 row found.

ATAN

ATAN関数は、Expressionのアーク・タンジェントを返します。

SQL構文

ATAN(Expression)

パラメータ

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

パラメータ 説明
Expression オペランドまたは列は、任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。

説明

  • Expressionは、無制限範囲で指定できます。ATANは、-pi/2からpi/2までの範囲の値をラジアンで表して返します。

  • ExpressionNUMBER型の場合、戻されるデータ型はNUMBERです。他のすべての数値データ型の場合、戻されるデータ型はBINARY_DOUBLEです。

  • Expressionの値がNULLの場合、NULLが戻されます。

ATAN関数を使用して、.3のアーク・タンジェントを返します。

Command> SELECT ATAN(.3) "Arc tangent of .3" FROM dual;
< .2914567944778670919956046214328911935013 >
1 row found.

ATAN2

ATAN2関数は、Expression1およびExpression2のアーク・タンジェントを返します。

SQL構文

ATAN2(Expression1,Expression2)

パラメータ

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

パラメータ 説明
Expression1 オペランドまたは列は、任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。
Expression2 オペランドまたは列は、任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。

説明

  • Expression1は、無制限範囲で指定できます。ATAN2は、Expression1およびExpression2の符号に応じて、ラジアンで表された-piからpiまでの範囲の値を返します。

  • ExpressionNUMBER型の場合、戻されるデータ型はNUMBERです。他のすべての数値データ型の場合、戻されるデータ型はBINARY_DOUBLEです。

  • Expression1またはExpression2の値がNULLであるか、Expression1Expression2の両方の値がNULLである場合、NULLが返されます。

ATAN2関数を使用して、.3および.2のアーク・タンジェントを返します。

Command> SELECT ATAN2(.3,.2) "Arc tangent of .3 and .2" FROM dual;
< .9827937232473290679857106110146660144997 >
1 row found.

AVG

引数の値の平均値を計算します。NULL値は無視されます。

SQL構文

AVG ([ALL | DISTINCT] Expression) [OVER ([AnalyticClause])]

パラメータ

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

パラメータ 説明
Expression 任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。
ALL 集計関数の引数に重複する行を含めます。ALLまたはDISTINCTのいずれも指定しない場合、ALLとみなされます。
DISTINCT 集計関数の引数から、重複する列の値を削除します。
OVER ([AnalyticClause]) 指定すると、集計分析関数を示します。分析関数の詳細は、「分析関数」を参照してください。

説明

  • GROUP BYが使用されていない空の表でAVGを計算すると、AVGNULLを戻します。

  • 空のグループまたはグループ化された空の表(GROUP BYを使用)でAVGを計算すると、AVGは何も戻しません。

  • AVGは、SUM/COUNTとして評価されます。結果のデータ型は、DIV演算子に適用されるルールを使用して導出されます。

  • 問合せでAnalyticClauseを指定しない場合、AVGは集計関数として機能します。

  • DISTINCTおよびAnalyticClauseを指定する場合は、QueryPartitionClauseのみを指定できます。OrderByClauseおよびWindowingClauseは指定できません。

HRスキーマで従業員の平均給与を計算します。CASTを使用して平均を列のデータ型としてキャストします。

Command> SELECT CAST(AVG (salary) AS NUMBER (8,2)) FROM employees;
< 6461.68 >

BITAND

expression1およびexpression2のビットでAND演算を計算します。

SQL構文

BITAND (Expression1, Expression2)

パラメータ

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

パラメータ 説明
Expression1

Expression2

Expression1およびExpression2のビットで計算されるAND演算。

説明

  • この関数は、TT_INTEGER NOT NULLを戻します。

  • BITAND関数は、(expression1 & expression2)にリライトされます。詳細は、ビット単位のAND演算子を参照してください。

  • AND演算は2ビット値を比較します。値が同じ場合、演算子は1を戻します。値が異なる場合、演算子は0を戻します。

2つの式に対するビット単位AND (&)演算の結果を戻すBITAND関数を使用します。

Command> SELECT BITAND (1,2) FROM dual;
< 0 >
1 row found.

BITNOT

expressionのビットでNOT演算を計算します。

SQL構文

BITNOT (Expression)

パラメータ

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

パラメータ 説明
Expression Expressionのビットで計算されるNOT演算。

説明

  • この関数は、TT_INTEGER NOT NULLを戻します。

  • BITNOT関数は、(~expression)にリライトされます。詳細は、ビット単位のNOT演算子を参照してください。

BITOR

expression1およびexpression2のビットでOR演算を計算します。

SQL構文

BITOR (Expression1, Expression2)

パラメータ

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

パラメータ 説明
Expression1

Expression2

Expression1Expression2のビットで計算されるOR演算。

説明

  • この関数は、TT_INTEGER NOT NULLを戻します。

  • BITOR関数は、(expression1 | expression2)にリライトされます。詳細は、ビット単位のOR演算子を参照してください。

BITXOR

expression1およびexpression2のビットで排他OR演算を計算します。

SQL構文

BITXOR (Expression1, Expression2)

パラメータ

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

パラメータ 説明
Expression1

Expression2

Expression1およびExpression2のビットで計算された排他OR演算。

説明

  • この関数は、TT_INTEGER NOT NULLを戻します。

  • BITXOR関数は、(expression1 ^ expression2)にリライトされます。詳細は、ビット単位の排他OR演算子を参照してください。

CAST

データをある型から別の型に変換できます。CASTは定数が使用可能な場合に使用できます。CASTは引数の正確なデータ型を指定する場合に役立ちます。-のような単項演算子、またはTO_CHARTO_DATEのような1つのオペランドを持つ関数の場合に特にあてはまります。

値は、互換性のあるデータ型に対してのみCASTできます。ただし、NULLを除きます。NULLは他の任意のデータ型にキャストできます。NULLリテラルを必要なターゲット・タイプに変換する場合、CASTは必要ありません。

次の変換がサポートされています。

  • 数値から数値または2進化10進コード(BCD)へ

  • NCHAR to NCHAR

  • CHAR文字列からBINARY文字列またはDATETIMEまたはTIMESTAMP

  • BINARY文字列からBINARYまたはCHAR文字列へ

  • DATETIMEまたはTIMESTAMPからCHAR

SQL構文

CAST
  ( {Expression | NULL} AS DataType )

パラメータ

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

パラメータ 説明
Expression 変換する値を指定します。
AS DataType 結果のデータ型を指定します。

説明

  • ドメイン名へのCASTはサポートされていません。

  • 選択済の値をキャストすると、CAST式を使用しない場合よりも、SELECT文の実行により多くの時間とメモリーを消費する可能性があります。

INSERT INTO t1 VALUES(TO_CHAR(CAST(? AS REAL)));
SELECT CONCAT(x1, CAST (? AS CHAR(10))) FROM t1;        
SELECT * FROM t1 WHERE CAST (? AS INT)=CAST(? AS INT);

CHR

CHR関数は、データベース文字セットに指定されたバイナリ値を持つ文字を戻します。

SQL構文

CHR(n)

パラメータ

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

パラメータ 説明
n データベース文字セットのバイナリ値。このバイナリ値を持つ文字が戻されます。結果のデータ型はVARCHAR2型になります。

説明

  • シングルバイト文字セットでは、n >256の場合、TimesTenによってn mod 256のバイナリ値が戻されます。

  • マルチバイト文字セットでは、nを1つのコード・ポイントに解決する必要があります。無効なコード・ポイントは検証されません。無効なコード・ポイントを指定した場合、結果は不確定です。

次の例は、ASCIIベースのシステムで、文字セットWE8ISO8859P1で実行します。

Command> SELECT CHR(67)||CHR(65)||CHR(84) FROM dual;
< CAT >
1 row found.

CEIL

CEIL関数は、Expression以上の最小の整数を戻します。

SQL構文

CEIL(Expression)

パラメータ

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

パラメータ 説明
Expression オペランドまたは列には、任意の数値データ型を指定できます。

説明

  • ExpressionNUMBER型の場合、戻されるデータ型は最大の精度およびスケールを持つNUMBERです。それ以外の場合、CEILでは、Expressionの数値データ型と同じデータ型が戻されます。

  • Expressionの値がNULLの場合、NULLが戻されます。Expressionの値が-INFINFまたはNaNの場合、戻り値はそれぞれ-INFINFまたはNaNです。

employees表の従業員のcommission_pctを合計し、CEILをコールして、SUMで戻される値以上で最小となる整数を戻します。SUM関数で戻される値は7.8で、CEIL関数で戻される値は8になります。

Command> SELECT SUM (commission_pct) FROM employees;
< 7.8 >
1 row found.
Command> SELECT CEIL (SUM (commission_pct)) FROM employees;
< 8 >
1 row found.

COALESCE

COALESCE関数は、式リスト内の最初のNULL以外のを戻します。すべてのNULLと評価された場合は、NULLを戻します。

SQL構文

COALESCE(Expression1, Expression2 [,...])

パラメータ

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

パラメータ 説明
Expression1, Expression2 [,...] 式リスト内の式。式リスト内の最初のNULL以外の式が戻されます。

各式は順に評価され、2つ以上の式が存在する必要があります。


説明

  • この関数は、NVL一般関数です。

  • COALESCEは、CASE式の一種として使用します。次に例を示します。

    COALESCE (Expression1, Expression2)
    

    これは、次と同じです。

    CASE WHEN Expression1 IS NOT NULL THEN Expression1
       ELSE Expression2
    END
    

次に、COALESCE式を使用した例を示します。COALESCE式を使用して、manager_id = 100である従業員のうち最初の10人に対して、commission_pctを戻します。commission_pctNOT NULLの場合、commission_pctの元の値が戻されます。commission_pctNULLの場合には、0(ゼロ)が戻されます。

Command> SELECT FIRST 10 employee_id, COALESCE (commission_pct, 0) FROM
          employees WHERE manager_id = 100;
< 101, 0 >
< 102, 0 >
< 114, 0 >
< 120, 0 >
< 121, 0 >
< 122, 0 >
< 123, 0 >
< 124, 0 >
< 145, .4 >
< 146, .3 >
10 rows found.

CONCAT

CONCAT関数は、新しい文字列を作成するために、ある文字列と別の文字列を連結します。

SQL構文

CONCAT(Expression1, Expression2)

パラメータ

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

パラメータ 説明
Expression1 CHARVARCHAR2NCHARNVARCHAR2CLOBまたはNCLOB式。
Expression2 CHARVARCHAR2NCHARNVARCHAR2CLOBまたはNCLOB式。

説明

  • CONCATExpression2と連結されたExpression1を返します。

  • Expression1Expression2のデータ型には互換性がある必要があります。

  • Expression2NULLの場合、CONCATExpression1を返します。Expression1NULLの場合、CONCATExpression2を返します。

  • Expression1Expression2が両方NULLであれば、CONCATNULLを返します。

  • NCHARNVARCHAR2も同様に扱われます。扱われるオペランドのいずれかが可変長であれば、戻り値も可変長になります。その他の場合、戻り値は固定長です。

  • CONCATの戻り型はExpression1Expression2の型によって異なります。2つの異なるデータ型を連結すると、結果を含むことのできるデータ型が戻されます。そのため、引数の1つが各国語文字データ型の場合は、戻り値は各国語文字データ型となります。引数の1つがLOBの場合、戻り値はLOBとなります。

    次の表に、戻り型の決定方法の例を示します。

    Expression1 Expression2 CONCAT
    CHAR(m) CHAR(n) CHAR(m+n)
    CHAR(m) VARCHAR2(n) VARCHAR2(m+n)
    VARCHAR2(m) CHAR(n) VARCHAR2(m+n)
    VARCHAR2(m) VARCHAR2(n) VARCHAR2(m+n)
    CLOB NCLOB NCLOB
    NCLOB NCHAR NCLOB
    NCLOB CHAR(n) NCLOB
    NCHAR(n) CLOB NCLOB

次の例では、姓と名前を連結します。

Command> SELECT CONCAT(CONCAT(first_name, ' '), last_name), salary 
         FROM employees;
< Steven King, 24000 >
< Neena Kochhar, 17000 >
< Lex De Haan, 17000 >
< Alexander Hunold, 9000 >
...
107 rows found.

次の例では、列idを列id2と連結します。この例では、結果のデータ型はNCHAR(40)になります。

Command> CREATE TABLE cat (id CHAR (20), id2 NCHAR (20));
Command> INSERT INTO cat VALUES ('abc', 'def');
1 row inserted.
Command> SELECT CONCAT (id,id2) FROM cat;
< abc                 def                  >
1 row found.

||演算子の詳細は、「式の指定」を参照してください。

COS

COS関数は、Expressionのコサイン(ラジアンで表された角度)を返します。

SQL構文

COS(Expression)

パラメータ

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

パラメータ 説明
Expression オペランドまたは列は、任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。

説明

  • ExpressionNUMBER型の場合、戻されるデータ型はNUMBERです。他のすべての数値データ型の場合、戻されるデータ型はBINARY_DOUBLEです。

  • Expressionの値がNULLの場合、NULLが戻されます。

COS関数を使用して、180度のコサインを返します。

Command> SELECT COS(180 * 3.14159265359/180) "Cosine of 180 degrees" FROM dual;
< -.99999999999999999999999997862483333497 >
1 row found.

COSH

COSH関数は、Expressionのハイパボリック・コサインを返します。

SQL構文

COSH(Expression)

パラメータ

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

パラメータ 説明
Expression オペランドまたは列は、任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。

説明

  • ExpressionNUMBER型の場合、戻されるデータ型はNUMBERです。他のすべての数値データ型の場合、戻されるデータ型はBINARY_DOUBLEです。

  • Expressionの値がNULLの場合、NULLが戻されます。

COSH関数を使用して、0のハイパボリック・コサインを返します。

Command> SELECT COSH(0) "Hyperbolic cosine of 0" FROM dual;
< 1 >
1 row found.

COUNT

WHERE句を満たすすべての行数を、NULL値の行も含めてカウントします。結果のデータ型はTT_BIGINTです。

COUNTは集計関数で、集計分析関数にもなります。集計関数の詳細は、「集計関数」を参照してください。分析関数の詳細は、「分析関数」を参照してください。表の行数の詳細は、『Oracle TimesTen In-Memory Databaseシステム表およびビュー・リファレンス』の「SYS.TABLES」にあるNUMTUPSフィールドに関する説明を参照してください。

SQL構文

COUNT ({* | [ALL | DISTINCT]{Expression|ROWID}}) 
[OVER ([AnalyticClause])]

パラメータ

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

パラメータ 説明
Expression 任意の数値データ型、または暗黙的に数値型に変換可能な数値以外の型を取ります。

すべての行をカウントします。NULL値を含む行はカウントされません。結果のデータ型はTT_BIGINTです。表の行数の詳細は、『Oracle TimesTen In-Memory Databaseシステム表およびビュー・リファレンス』の「SYS.TABLES」にあるNUMTUPSフィールドに関する説明を参照してください。

*
WHERE句を満たす行の数を、重複行およびNULL値の行も含めてカウントします。COUNTNULLを返すことはありません。結果のデータ型はTT_BIGINTです。表の行数の詳細は、『Oracle TimesTen In-Memory Databaseシステム表およびビュー・リファレンス』の「SYS.TABLES」にあるNUMTUPSフィールドに関する説明を参照してください。
ALL 集計関数の引数に重複する行を含めます。ALLまたはDISTINCTのいずれも指定しない場合、ALLとみなされます。
DISTINCT 集計関数の引数から、重複する列の値を削除します。
ROWID TimesTenでは、表に保存される各行にROWIDと呼ばれる一意のIDが割り当てられます。ROWID値はROWID擬似列から取得されます。詳細は、「ROWID疑似列」を参照してください。
OVER ([AnalyticClause]) 指定すると、集計分析関数を示します。分析関数の詳細は、「分析関数」を参照してください。

説明

  • GROUP BY句が使用されていない空の表で集計関数を計算すると、COUNTは0を返します。

  • 空のグループまたはグループ化された空の表(GROUP BYを使用)で集計関数を計算すると、COUNTは何も返しません。

  • 問合せでAnalyticClauseを使用しない場合、COUNTは集計関数として機能します。

  • DISTINCTおよびAnalyticClauseを指定する場合は、QueryPartitionClauseのみを指定できます。OrderByClauseおよびWindowingClauseは指定できません。

従業員の数をカウントします。

Command> SELECT COUNT(*) "TOTAL EMP" FROM employees;
 
TOTAL EMP
< 107 >
1 row found.

個々のマネージャIDを重複しないように選択して、マネージャの数をカウントします。

Command> SELECT COUNT(DISTINCT manager_id) "Managers" FROM employees;
 
MANAGERS
< 18 >
1 row found.

CURRENT_USER

データベースに現在接続しているTimesTenユーザーの名前を返します。

SQL構文

CURRENT_USER

パラメータ

CURRENT_USERにはパラメータがありません。

データベースに現在接続しているユーザーの名前を返すには、次の文を使用します。

SELECT CURRENT_USER FROM dual;

DECODE

DECODE関数は、式を各検索値と1つずつ比較します。式が検索値と等しい場合、結果の値が戻されます。一致するものがない場合は、デフォルト値(指定されている場合)が戻されます。それ以外の場合は、NULLが戻されます。

SQL構文

DECODE(Expression, {SearchValue, Result [,...])} [,Default])

パラメータ

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

パラメータ 説明
Expression 検索値と比較される式。Expressionは、CHARVARCHAR2NCHARまたはNVARCHAR2データ型を取ります。TimesTenデータ型およびOracle Databaseデータ型の両方がサポートされます。
SearchValue 式が1つ以上の検索値と比較されます。
Result 式がSearchValueと等しい場合、指定されたResult値が戻されます。
Default 一致するものが検出されない場合、デフォルト値が戻されます。Defaultはオプションです。Defaultが指定されず、一致するものが検出されない場合、NULLが戻されます。

説明

式がNULLの場合、NULL式はNULL検索値と等しくなります。

次の例では、DECODE関数を呼び出します。locations表で、列country_id'IT'と等しい場合は、'Italy'が戻されます。country_id'JP'と等しい場合は、'Japan'が戻されます。country_id'US'と等しい場合は、'United States'が戻されます。country_id'IT''JP'または'US'と等しくない場合は、'Other'が戻されます。

Command> SELECT location_id, 
         DECODE (country_id, 'IT', 'Italy', 
                 'JP', 'Japan', 'US', 'United States', 'Other') 
         FROM locations WHERE location_id < 2000;

LOCATION_ID, EXP
< 1000, Italy >
< 1100, Italy >
< 1200, Japan >
< 1300, Japan >
< 1400, United States >
< 1500, United States >
< 1600, United States >
< 1700, United States >
< 1800, Other >
< 1900, Other >
10 rows found.

DENSE_RANK

DENSE_RANK関数は分析関数で、順序付けされた行のグループ内の行のランクを計算し、そのランクをNUMBER型として戻します。

SQL構文

DENSE_RANK () OVER ( [QueryPartitionClause] OrderByClause )

パラメータ

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

パラメータ 説明
QueryPartitionClause 構文、セマンティクスおよび制限の詳細は、「分析関数」を参照してください。
OrderByClause 構文、セマンティクスおよび制限の詳細は、「分析関数」を参照してください。

説明

  • ランクは1から始まる連続した整数です。ランクの最大値は、問合せが戻す一意の数値です。同ランクの場合、ランクの値はスキップされません。そのランク付け基準に関して同じ値を持つ行は、同じランクになります。

  • DENSE_RANKは、他の行について、問合せで戻される各行のランクを計算します。この計算は、OrderByClauseにあるExpressionsの値に基づいて行われます。

人事部門または購買部門で働くすべての従業員の部門名、従業員名および給与を選択します。この2つの部門それぞれについて、一意の各給与に対するランクを計算します。同じ給与は同じランクになります。

Command> SELECT d.department_name, e.last_name, e.salary, DENSE_RANK()
           OVER (PARTITION BY e.department_id ORDER BY e.salary) AS dense
         FROM employees e, departments d
         WHERE e.department_id = d.department_id
         AND d.department_id IN ('30', '40')
         ORDER BY e.last_name, e.salary, d.department_name, dense;
< Purchasing, Baida, 2900, 4 >
< Purchasing, Colmenares, 2500, 1 >
< Purchasing, Himuro, 2600, 2 >
< Purchasing, Khoo, 3100, 5 >
< Human Resources, Mavris, 6500, 1 >
< Purchasing, Raphaely, 11000, 6 >
< Purchasing, Tobias, 2800, 3 >
7 rows found.

ELEMENTIDCOMPUTE

ELEMENTIDCOMPUTE関数は、TimesTen Scaleoutのみでサポートされています。この関数は、分散キーが属している要素のIDを戻します。

SQL構文

ELEMENTIDCOMPUTE (Expression [,...])

パラメータ

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

パラメータ 説明
Expression 1つ以上の式。

説明

ELEMENTIDCOMPUTE SQL関数では、1つ以上の式を使用できます。この式のリストは、ハッシュ分散キーを表します。この関数によって戻される要素IDは、トランザクション内では固定されています。TimesTen Scaleoutのトポロジが変更されると、行が別の要素にマップされることで、特定の行の要素のIDが変化する場合があります。

この関数を使用すると、特定の分散キーが挿入される要素を予測できます。詳細は、例4-3「分散キーの要素の予測」を参照してください。

ELEMENTIDCOMPUTEは、TT_INTEGERデータ型を戻します。


ノート:

K-safetyを2に設定した場合、ELEMENTIDCOMPUTEはレプリカ・セットのいずれかの要素のIDを戻します。戻される値は、データ行がローカル要素IDにマップされる場合でも、接続している要素IDでないことがあります。

これらの例では、ELEMENTIDCOMPUTE関数の使用方法を示します。

例4-1 分散キーの要素IDを戻すためのELEMENTIDCOMPUTEの呼出し

この例では、cust_id分散キーが属するレプリカ・セット内の1つの要素の要素IDを戻すために、ELEMENTIDCOMPUTE関数を呼び出します。また、この問合せによって、cust_id910から920customers表からcust_idlast_nameおよびfirst_name列も戻されます。

Command> SELECT ELEMENTIDCOMPUTE (cust_id), cust_id,last_name,first_name
         FROM customers WHERE cust_id BETWEEN 910 AND 920
         ORDER BY cust_id, last_name, first_name;
< 3, 910, Riley, Tessa >
< 1, 911, Riley, Rashad >
< 1, 912, Riley, Emma >
< 1, 913, Rivera, Erin >
< 1, 914, Roberts, Ava >
< 1, 915, Roberts, Lee >
< 3, 916, Roberts, Clint >
< 5, 917, Robertson, Faith >
< 3, 918, Robinson, Miguel >
< 3, 919, Robinson, Mozell >
< 5, 920, Rodgers, Darryl >
11 rows found.

例4-2 レプリカ・セットのいずれかの要素を戻す

この例では、要素1と2は、同じレプリカ・セットに含まれています。この例は、要素1への接続とレプリカ(要素2)への2番目の接続を示しています。要素2に接続した場合、ELEMENTIDCOMPUTEから戻される値は、データ行が要素2にマップされる場合でも要素2ではありません。この例は、戻される値がアプリケーションの接続先の要素IDでない可能性があることを示しています。

Command> SELECT elementId# FROM dual;
< 1 >
1 row found.

Command> SELECT FIRST 5 ELEMENTIDCOMPUTE (cust_id), elementid# FROM customers;
< 1, 1 >
< 1, 1 >
< 1, 1 >
< 1, 1 >
< 1, 1 >
5 rows found.

Command> SELECT elementId# FROM dual;
< 2 >
1 row found.

Command> SELECT FIRST 5 ELEMENTIDCOMPUTE (cust_id), elementid# FROM customers;
< 1, 2 >
< 1, 2 >
< 1, 2 >
< 1, 2 >
< 1, 2 >
5 rows found.

例4-3 分散キーの要素の予測

この例では、ELEMENTIDCOMPUTE関数を使用して、データの特定の行が挿入される要素を予測する方法を示します。customers表に、1から1000cust_id値があります。cust_id 10032000または2400が挿入される要素を予測します。

たとえば、1003cust_id値は、customers表に挿入された場合、要素5を含むレプリカ・セットに格納されると予測されます。

Command> SELECT FIRST 1 ELEMENTIDCOMPUTE (CAST (? AS NUMBER)) FROM customers;
 
Type '?' for help on entering parameter values.
Type '*' to end prompting and abort the command.
Type '-' to leave the parameter unbound.
Type '/;' to leave the remaining parameters unbound and execute the command.
 
Enter Parameter 1 '_QMARK_1' (NUMBER) > 1003
< 5 >
1 row found.

2000cust_id値は、customers表に挿入された場合、要素3を含むレプリカ・セットに格納されると予測されます。

Command> SELECT FIRST 1 ELEMENTIDCOMPUTE (CAST (? AS NUMBER)) FROM customers;
 
Type '?' for help on entering parameter values.
Type '*' to end prompting and abort the command.
Type '-' to leave the parameter unbound.
Type '/;' to leave the remaining parameters unbound and execute the command.
 
Enter Parameter 1 '_QMARK_1' (NUMBER) > 2000
< 3 >
1 row found.

2400cust_id値は、customers表に挿入された場合、要素1を含むレプリカ・セットに格納されると予測されます。

Command> SELECT FIRST 1 ELEMENTIDCOMPUTE (CAST (? AS NUMBER)) FROM customers;
 
Type '?' for help on entering parameter values.
Type '*' to end prompting and abort the command.
Type '-' to leave the parameter unbound.
Type '/;' to leave the remaining parameters unbound and execute the command.
 
Enter Parameter 1 '_QMARK_1' (NUMBER) > 2400
< 1 >
1 row found.

EMPTY_BLOB

EMPTY_BLOB関数を使用すると、BLOB列を長さが0(ゼロ)で空のBLOBに初期化できます。この関数は、LOBをNULL以外の値に初期化するため、NOT NULLと宣言されているBLOBの初期化に使用できます。

この関数は、TimesTen Scaleoutではサポートされていません。

SQL構文

EMPTY_BLOB ()

パラメータ

EMPTY_BLOBにはパラメータがありません。

説明

INSERT文のVALUES句またはUPDATE文のSET句でのみEMPTY_BLOBを使用できます。

次の例では、EMPTY_BLOB関数を使用して、NULL以外のBLOB列を長さが0(ゼロ)の値に初期化します。

Command> CREATE TABLE blob_content (id NUMBER PRIMARY KEY, 
           blob_column BLOB NOT NULL); -- Does not allow a NULL value

Command> INSERT INTO blob_content (id, blob_column) 
         VALUES (1, EMPTY_BLOB( ) );
1 row inserted.

EMPTY_CLOB

EMPTY_CLOB関数を使用すると、CLOBまたはNCLOB列を長さが0(ゼロ)で空のCLOBまたはNCLOBに初期化できます。CLOBデータ型とNCLOBデータ型の両方が、EMPTY_CLOB関数で初期化されます。この関数は、LOBをNULL以外の値に初期化するため、NOT NULLと宣言されているCLOBまたはNCLOBの初期化に使用できます。

この関数は、TimesTen Scaleoutではサポートされていません。

SQL構文

EMPTY_CLOB () 

パラメータ

EMPTY_CLOBにはパラメータがありません。

説明

INSERT文のVALUES句またはUPDATE文のSET句でのみEMPTY_CLOBを使用できます。

次の例では、EMPTY_CLOB関数を使用して、NULL以外のCLOB列を長さが0(ゼロ)の値に初期化します。

Command> CREATE TABLE clob_content (id NUMBER PRIMARY KEY, 
           clob_column CLOB NOT NULL ); -- Does not allow a NULL value

Command> INSERT INTO clob_content (id, clob_column) 
         VALUES (1, EMPTY_CLOB( ) );
1 row inserted.

EXP

EXP関数は、n乗したe (e = 2.71828183...)を返します。

SQL構文

EXP(Expression)

パラメータ

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

パラメータ 説明
Expression オペランドまたは列は、任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。

説明

  • EXPは、Expressionと同じ型の値を返します。

  • ExpressionNUMBER型の場合、戻されるデータ型はNUMBERです。他のすべての数値データ型の場合、戻されるデータ型はBINARY_DOUBLEです。

  • Expressionの値がNULLの場合、NULLが戻されます。

EXP関数を使用して、4乗したeを返します。

Command> SELECT EXP(4) "e to the 4th power" FROM dual;
< 54.59815003314423907811026120286087840308 >
1 row found.

EXTRACT

EXTRACT関数は、指定された日時フィールドの値を、日時または時間隔の値の式からNUMBERデータ型として抽出して返します。この関数は、日時フィールドの値を非常に大きな表で操作する場合に役立つことがあります。

SQL構文

EXTRACT (DateTimeField FROM IntervalExpression | DateTimeExpression)

パラメータ

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

パラメータ 説明
DateTimeField IntervalExpressionまたはDateTimeExpressionから抽出されるフィールドです。指定できるフィールドは、YEARMONTHDAYHOURMINUTEまたはSECONDです。
IntervalExpression 時間隔の結果です。
DateTimeExpression 日時の式です。たとえば、TIMEDATETIMESTAMPなどです。

説明

  • DateTimeFieldDateTimExpressionまたはIntervalExpressionを組み合せた結果が、あいまいになる場合があります。この場合、TimesTenではUNKNOWNが返されます。

  • 抽出するフィールドは、IntervalExpressionまたはDateTimeExpressionのフィールドである必要があります。たとえば、DATE値からは、YEARMONTHおよびDAYのみを抽出できます。同様に、TIMEDATEまたはTIMESTAMPデータ型からは、HOURMINUTEまたはSECONDのみを抽出できます。

  • フィールドは、NUMBER値に抽出されます。

次に、秒のフィールドを時間隔の結果sysdate-t1.createtimeから抽出する例を示します。

SELECT EXTRACT(SECOND FROM sysdate-t1.createtime) FROM t1;

次に、秒のフィールドをシステム表dualsysdateから抽出する例を示します。

Command> SELECT EXTRACT (SECOND FROM sysdate) FROM dual;
< 20 >
1 row found.

FIRST_VALUE

FIRST_VALUE関数は分析関数で、順序付けられた値の集合にある最初の値を戻します。

SQL構文

FIRST_VALUE (Expression [IGNORE NULLS]) OVER (AnalyticClause)

パラメータ

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

パラメータ 説明
Expression サポートされるExpressionsの詳細は、「分析関数」を参照してください。
IGNORE NULLS FIRST_VALUEが、集合内の最初のNULL以外の値を戻し、集合内のすべての値がNULLの場合はNULLを戻すようにするにはIGNORE NULLSを指定します。句はオプションです。
OVER (AnalyticClause) 構文、セマンティクスおよび制限の詳細は、「分析関数」を参照してください。

説明

  • 集合内の最初の値がNULLの場合、IGNORE NULLSを指定していないかぎり、FIRST_VALUENULLを戻します。関数が、集合内の最初のNULL以外の値を戻し、集合内のすべての値がNULLの場合はNULLを戻すようにするにはIGNORE NULLSを指定します。

FIRST_VALUE関数を使用して、部門90の各従業員について、給与が最も少ない従業員の姓を選択します。

Command> SELECT department_id, last_name, salary, FIRST_VALUE (last_name) OVER
          (ORDER BY salary ASC ROWS UNBOUNDED PRECEDING) AS lowest_sal
         FROM
          (SELECT * FROM employees WHERE department_id = 90 ORDER BY employee_id)
           ORDER BY department_id, last_name, salary, lowest_sal;
< 90, De Haan, 17000, Kochhar >
< 90, King, 24000, Kochhar >
< 90, Kochhar, 17000, Kochhar >
3 rows found.

FLOOR

FLOOR関数は、Expression以下の最大の整数を戻します。

SQL構文

FLOOR (Expression)

パラメータ

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

パラメータ 説明
Expression オペランドまたは列には、任意の数値データ型を指定できます。

説明

  • ExpressionNUMBER型の場合、戻されるデータ型は最大の精度およびスケールを持つNUMBERです。それ以外の場合、FLOORでは、Expressionの数値データ型と同じデータ型が戻されます。

  • Expressionの値がNULLの場合、NULLが戻されます。Expressionの値が-INFINFまたはNaNの場合、戻り値はそれぞれ-INFINFまたはNaNです。

employees表の従業員のcommission_pctを合計します。次に、FLOORをコールして、SUMで戻される値以下で最大となる整数を戻します。SUM関数で戻される値は7.8で、FLOOR関数で戻される値は7になります。

Command> SELECT SUM (commission_pct) FROM employees;
< 7.8 >
1 row found.
Command> SELECT FLOOR (SUM (commission_pct)) FROM employees;
< 7 >
1 row found.

GREATEST

GREATEST関数は、1つ以上の式のリストのうち、最大のものを戻します。

SQL構文

GREATEST (Expression [,...])

パラメータ

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

パラメータ 説明
Expression [,...] 最大の式の値を決定するために評価される1つ以上の式のリスト。オペランドまたは列には、数値、文字または日付を指定できます。リスト内の各式は、同じデータ型ファミリから採用する必要があります。

説明

  • リスト内の各式は、同じデータ型ファミリまたは日付サブファミリから採用する必要があります。データ型ファミリには、数値、文字および日付が含まれます。日付ファミリには、4つのサブファミリ(日付ファミリ、TIMEファミリ、TT_DATEファミリおよびTT_TIMESTAMPファミリ)が含まれます。たとえば、式のリストに数値式と文字式を指定することはできません。同様に、式のリストに日付式とTT_TIMESTAMP式を指定することはできません。

  • 最初のExpressionが数値の場合、TimesTenにより数値の優先順位が最も高い引数が決定されます。比較の前に、残りの引数は暗黙的にそのデータ型に変換され、そのデータ型が戻されます。

  • 最初のExpressionが文字ファミリに属しており、オペランドまたは列がCHARまたはVARCHAR2型の場合、戻されるデータ型はVARCHAR2です。オペランドまたは列がNCHARまたはNVARCHAR2型の場合、戻されるデータ型はNVARCHAR2です。戻されるデータ型の長さは、最も大きい式の長さに等しくなります。あるオペランドまたは列がCHARまたはVARCHAR2型で、別のオペランドまたは列がNCHARまたはNVARCHAR2の場合、戻されるデータ型はNVARCHAR2です。

  • TimesTenでは、文字ファミリのデータ型に対して非空白埋め比較セマンティクスが使用されます。

  • 最初の式が日付ファミリの場合、戻されるデータ型は、最初の式と同じデータ型です。

  • いずれかの式がNULLの場合、結果はNULLになります。

  • 最初のExpressionが文字ファミリに属しており、オペランドまたは列がTT_CHARまたはTT_VARCHAR型の場合、戻されるデータ型はTT_VARCHARです。オペランドまたは列がTT_NCHARまたはTT_NVARCHAR型の場合、戻されるデータ型はTT_NVARCHARです。戻されるデータ型の長さは、最も大きい式の長さに等しくなります。

  • 最大で256個の式を指定できます。

GREATEST関数を使用して、最大値の文字列を戻します。

Command> SELECT GREATEST ('GREAT', 'GREATER', 'GREATEST') FROM dual;
< GREATEST >
1 row found.

GREATEST関数を使用して、最大値の数値式を戻します。この例の場合、数値の優先順位が最も高いデータ型はBINARY_DOUBLEのため、比較の前に各引数は暗黙的にBINARY_DOUBLEに変換され、BINARY_DOUBLEデータ型が戻されます。

Command> SELECT GREATEST (10, 10.55, 10.1D) FROM dual;
< 10.5500000000000 >
1 row found.

DESCRIBEコマンドを使用して、戻されるデータ型がBINARY_DOUBLEであることを確認します。

Command> DESCRIBE SELECT GREATEST (10, 10.55, 10.1D) FROM dual;

Prepared Statement:
  Columns:
    EXP                             BINARY_DOUBLE NOT NULL

GREATEST関数を使用して、最大値のDATE式を戻します。DATEおよびTIMESTAMPは、同じ日付ファミリです。

Command> SELECT GREATEST (DATE '2007-09-30',TIMESTAMP '2007-09-30:10:00:00') 
         FROM dual;
< 2007-09-30 10:00:00 >
1 row found.

GREATEST関数を使用して、TT_DATE式およびTT_TIMESTAMP式のリスト内の最大値を戻そうと試みます。TT_DATETT_TIMESTAMPは異なる日付サブファミリに属しており、同じ式のリスト内では使用できないため、エラーが戻されます。

Command> SELECT GREATEST (TT_DATE '2007-09-30', 
                          TT_TIMESTAMP '2007-09-30:10:00:00') 
         FROM dual;
2817: Invalid data type TT_TIMESTAMP for argument 2 for function GREATEST
The command failed.

GREATEST関数を使用して、最大値のTT_DATE式を戻します。

Command> SELECT GREATEST (TT_DATE '2007-09-30',
                          TT_DATE '2007-09-29', 
                          TT_DATE '2007-09-28')
         FROM dual;
< 2007-09-30 >
1 row found.

GROUP_ID

GROUP_ID関数は、GROUP BY句によるSELECT問合せの結果の重複するグループを識別します。この関数は一意のグループに数値0(ゼロ)を戻し、後続の重複するグループ行は1から始まるより大きな数値を受け取ります。GROUP_ID関数は、問合せ結果から重複グループを除外します。重複する値を生成する可能性がある複雑な問合せを行う場合、HAVING GROUP_ID() = 0条件を指定することによって重複する行を除外できます。


ノート:

GROUP BY句の詳細は、「GROUP BY句」を参照してください。HAVING句の詳細は、「SELECT」を参照してください。

構文

GROUP_ID関数は、1つのGROUP BY句を含むSELECT文にのみ適用できます。選択リストおよびSELECT問合せのHAVING句で使用できます。

GROUP_ID()

パラメータ

GROUP_IDにはパラメータがありません。

次の例では、GROUP_IDがどのように一意のグループに0(ゼロ)を戻し、重複グループを識別するために0より大きい数値を戻すのかを示します。次の例では、部門番号、マネージャID、およびマネージャ内の給与合計を出力します。結果の出力は、マネージャおよび部門でROLLUP句を使用してグループ化され、超集合結果を示します。

Command> SELECT department_id as DEPT, manager_id AS MGR, 
           GROUP_ID(), SUM(salary) as SALARY
         FROM employees 
         WHERE manager_id > 146 
         GROUP BY manager_id, ROLLUP(manager_id, department_id) 
         ORDER BY manager_id, department_id;
 
DEPT, MGR, EXP, SALARY
< 80, 147, 0, 46600 >
< <NULL>, 147, 1, 46600 >
< <NULL>, 147, 0, 46600 >
< 80, 148, 0, 51900 >
< <NULL>, 148, 0, 51900 >
< <NULL>, 148, 1, 51900 >
< 80, 149, 0, 43000 >
< <NULL>, 149, 0, 7000 >
< <NULL>, 149, 0, 50000 >
< <NULL>, 149, 1, 50000 >
< 20, 201, 0, 6000 >
< <NULL>, 201, 0, 6000 >
< <NULL>, 201, 1, 6000 >
< 110, 205, 0, 8300 >
< <NULL>, 205, 0, 8300 >
< <NULL>, 205, 1, 8300 >
16 rows found.

GROUPING

GROUPING関数を使用すると、NULLが格納されたNULLなのか小計または総計を示すのかを判断できます。単一の列を引数として使用すると、GROUPINGは、ROLLUPまたはCUBE演算によって生成されたNULL値が出現した場合に1を戻し、小計または総計であることを示します。格納されたNULLなど、その他の値では0(ゼロ)を戻します。


ノート:

ROLLUP句およびCUBE句の詳細は、「GROUP BY句」を参照してください。

構文

GROUPING関数は、1つのGROUP BY句を含むSELECT文のみに適用できます。選択リストおよびGROUP BY句を含むSELECT問合せのHAVING句で使用できます。GROUPING関数の構文で示される式は、GROUP BY句に含まれる式のいずれかと一致している必要があります。

次の構文は、GROUPINGを使用し、式の結果が集計として示されているかどうかを識別します。

SELECT ...  [GROUPING(Expression) ... ]  ... 
  GROUP BY ... { RollupCubeClause | GroupingSetsClause } ...

次の構文は、HAVING句内のGROUPINGを使用し、式の結果が集計として示されているのかどうかを識別します。

SELECT ...
  GROUP BY ... { RollupCubeClause | GroupingSetsClause } ...
 HAVING GROUPING(Expression) = 1

パラメータ

パラメータ 説明
Expression 有効な式の構文。第3章「式」を参照してください。
RollupCubeClause GROUP BY句には、1つ以上のROLLUPまたはCUBE句が含まれることがあります。詳細は、「GROUP BY句」を参照してください。
GroupingSetsClause GROUP BY句には、1つ以上のGROUPING SETS句が含まれることがあります。GROUPING SETS句を使用すると、データベースが戻すデータのグループを明示的に指定できます。詳細は、「GROUPING SETS」を参照してください。

次の例では、部門の総計が出現した場合に、GROUPING関数がどのように1を戻すのかを示します。

Command> columnlabels on;
Command> SELECT department_id AS DEPT, 
           GROUPING(department_id) AS DEPT_GRP, SUM(salary) AS SALARY 
         FROM emp_details_view 
         GROUP BY ROLLUP(department_id) 
         ORDER BY department_id; 
DEPT, DEPT_GRP, SALARY
< 10, 0, 4400 >
< 20, 0, 19000 >
< 30, 0, 24900 >
< 40, 0, 6500 >
< 50, 0, 156400 >
< 60, 0, 28800 >
< 70, 0, 10000 >
< 80, 0, 304500 >
< 90, 0, 58000 >
< 100, 0, 51600 >
< 110, 0, 20300 >
< <NULL>, 1, 684400 >
12 rows found.

次の例では、各列にGROUPING関数を使用し、総計のNULL値を判断できることを示します。

Command> SELECT department_id AS DEPT, job_id AS JOB, 
           GROUPING(department_id) AS DEPT_GRP, GROUPING(job_id) AS JOB_GRP, 
           GROUPING_ID(department_id, job_id) AS GRP_ID, SUM(salary) AS SALARY 
         FROM emp_details_view 
         GROUP BY CUBE(department_id, job_id) 
         ORDER BY department_id, job_id, grp_id ASC;
 
DEPT, JOB, DEPT_GRP, JOB_GRP, GRP_ID, SALARY
< 10, AD_ASST, 0, 0, 0, 4400 >
< 10, <NULL>, 0, 1, 1, 4400 >
< 20, MK_MAN, 0, 0, 0, 13000 >
< 20, MK_REP, 0, 0, 0, 6000 >
< 20, <NULL>, 0, 1, 1, 19000 >
< 30, PU_CLERK, 0, 0, 0, 13900 >
< 30, PU_MAN, 0, 0, 0, 11000 >
< 30, <NULL>, 0, 1, 1, 24900 >
...
< 110, AC_ACCOUNT, 0, 0, 0, 8300 >
< 110, AC_MGR, 0, 0, 0, 12000 >
< 110, <NULL>, 0, 1, 1, 20300 >
< <NULL>, AC_ACCOUNT, 1, 0, 2, 8300 >
< <NULL>, AC_MGR, 1, 0, 2, 12000 >
< <NULL>, AD_ASST, 1, 0, 2, 4400 >
< <NULL>, AD_PRES, 1, 0, 2, 24000 >
< <NULL>, AD_VP, 1, 0, 2, 34000 >
< <NULL>, FI_ACCOUNT, 1, 0, 2, 39600 >
< <NULL>, FI_MGR, 1, 0, 2, 12000 >
< <NULL>, HR_REP, 1, 0, 2, 6500 >
< <NULL>, IT_PROG, 1, 0, 2, 28800 >
< <NULL>, MK_MAN, 1, 0, 2, 13000 >
< <NULL>, MK_REP, 1, 0, 2, 6000 >
< <NULL>, PR_REP, 1, 0, 2, 10000 >
< <NULL>, PU_CLERK, 1, 0, 2, 13900 >
< <NULL>, PU_MAN, 1, 0, 2, 11000 >
< <NULL>, SA_MAN, 1, 0, 2, 61000 >
< <NULL>, SA_REP, 1, 0, 2, 243500 >
< <NULL>, SH_CLERK, 1, 0, 2, 64300 >
< <NULL>, ST_CLERK, 1, 0, 2, 55700 >
< <NULL>, ST_MAN, 1, 0, 2, 36400 >
< <NULL>, <NULL>, 1, 1, 3, 684400 >
50 rows found.

GROUPING_ID

GROUPING_ID関数は、ROLLUPまたはCUBE句による集計の正確なGROUP BYレベルを示す数値を戻します。


ノート:

ROLLUPおよびCUBE句の詳細は、「GROUP BY句」を参照してください。

GROUPING_ID関数は、ROLLUPまたはCUBEからグループ列の順序付けリストを入力として取得し、次のステップでグループIDを計算します。

  1. GROUPING関数をリストの個々の列に適用します。結果は1および0(ゼロ)の集合で、1はROLLUPまたはCUBEで生成された超集合を示します。

  2. 引数リストの列と同じ順序でこれらの1および0(ゼロ)を配置し、ビット・ベクトルを作成します。

  3. このビット・ベクトルを2進数から10進数に変換します。これがグループIDとして戻されます。

たとえば、CUBE(department_id, job_id)でグループ化すると、戻り値は表4-1のようになります。

表4-1 CUBE(department_id, job_id)でのGROUPING_IDの例

集計レベル ビット・ベクトル GROUPING_ID

部門および職務の通常のグループ行

0 0

0

job_idで集計されたdepartment_idの小計

0 1

1

department_idで集計されたjob_idの小計

1 0

2

総計

1 1

3


GROUPING_ID関数を問合せで使用し、サマリー行のみが表示されるように行をフィルタリングできます。HAVING句でGROUPING_ID関数を使用すると、総計および小計を含む行のみに出力を制限できます。これは、GROUPING_ID関数の比較を追加して、結果がHAVING句で0(ゼロ)よりも大きくなるときに実行できます。

構文

GROUPING_ID関数は、GROUP BY句、GROUPING関数、およびROLLUP句、CUBE句またはGROUPING SETS句のいずれかを含むSELECT文にのみ適用できます。選択リストおよびSELECT問合せのHAVING句で使用できます。

GROUPING_ID(Expression [, Expression ]...)

パラメータ

パラメータ 説明
Expression 有効な式の構文。第3章「式」を参照してください。

次の例では、GROUPING_ID関数にHAVING句のフィルタがあり、戻り値は0(ゼロ)以上になります。小計または総計のいずれかを含まない行は除外されます。次の例では、グループID1で識別される部門の小計、グループID2の職務IDの小計、およびグループID3の総計を示します。

Command> SELECT department_id AS DEPT, job_id AS JOB, 
           GROUPING_ID(department_id, job_id) AS GRP_ID, 
           SUM(salary) AS SALARY 
         FROM emp_details_view 
         GROUP BY CUBE(department_id, job_id) 
         HAVING GROUPING_ID(department_id, job_id) > 0 
         ORDER BY department_id, job_id, grp_id ASC;
 
DEPT, JOB, GRP_ID, SALARY
< 10, <NULL>, 1, 4400 >
< 20, <NULL>, 1, 19000 >
< 30, <NULL>, 1, 24900 >
< 40, <NULL>, 1, 6500 >
< 50, <NULL>, 1, 156400 >
< 60, <NULL>, 1, 28800 >
< 70, <NULL>, 1, 10000 >
< 80, <NULL>, 1, 304500 >
< 90, <NULL>, 1, 58000 >
< 100, <NULL>, 1, 51600 >
< 110, <NULL>, 1, 20300 >
< <NULL>, AC_ACCOUNT, 2, 8300 >
< <NULL>, AC_MGR, 2, 12000 >
< <NULL>, AD_ASST, 2, 4400 >
< <NULL>, AD_PRES, 2, 24000 >
< <NULL>, AD_VP, 2, 34000 >
< <NULL>, FI_ACCOUNT, 2, 39600 >
< <NULL>, FI_MGR, 2, 12000 >
< <NULL>, HR_REP, 2, 6500 >
< <NULL>, IT_PROG, 2, 28800 >
< <NULL>, MK_MAN, 2, 13000 >
< <NULL>, MK_REP, 2, 6000 >
< <NULL>, PR_REP, 2, 10000 >
< <NULL>, PU_CLERK, 2, 13900 >
< <NULL>, PU_MAN, 2, 11000 >
< <NULL>, SA_MAN, 2, 61000 >
< <NULL>, SA_REP, 2, 243500 >
< <NULL>, SH_CLERK, 2, 64300 >
< <NULL>, ST_CLERK, 2, 55700 >
< <NULL>, ST_MAN, 2, 36400 >
< <NULL>, <NULL>, 3, 684400 >
31 rows found.

INSTR、INSTRB、INSTR4

ある文字列が別の文字列内に検出された場合に、その最初の位置を識別します。サブストリングが文字列内で検出されない場合は0(ゼロ)が返されます。返される位置は、常にSourceExprの開始と関連します。INSTRは、NUMBER型を返します。

SQL構文

{INSTR | INSTRB | INSTR4} ( SourceExpr, SearchExpr [,m[,n]])

パラメータ

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

パラメータ 説明
SourceExpr SearchExprの位置を検出するために検索される文字列です。値は、CHARVARCHAR2NCHARNVARCHAR2CLOBまたはNCLOBデータ型を含むサポートされた文字データ型になります。TimesTenデータ型およびOracle Databaseデータ型の両方がサポートされます。
SearchExpr 文字列SourceExprで検出されるサブストリングです。SearchExprSourceExprにない場合は、0(ゼロ)が返されます。文字列のいずれかの長さが0(ゼロ)の場合は、NULLが返されます。
m 検索を開始する位置です(オプション)。mが0(ゼロ)に指定された場合、結果は0(ゼロ)です。mが正の値の場合、検索はCharExpr2+mから開始されます。mが負の値の場合、検索はCharExpr2の終わりからm文字目で開始されます。
n nには正の値を指定する必要があります。検索結果では、CharExpr1n番目の出現位置が返されます。

説明

INSTRは、文字セットで定義された文字を使用して文字列を計算します。INSTRBには、文字でなくバイトを使用します。INSTR4には、UCS4コード・ポイントを使用します。

次の例では、INSTRを使用して、文字列'Washington'で使用されるサブストリング'ing'の位置を判別します。

Command> SELECT INSTR ('Washington', 'ing') FROM dual;
< 5 >
1 row found.

次の例では、INSTRを使用して、COUNT関数への入力として従業員の数に市外局番650を指定します。

Command> SELECT COUNT(INSTR(phone_number, '650')) FROM employees;
< 107 >
1 row found.

LAST_VALUE

LAST_VALUE関数は分析関数で、順序付けられた値の集合にある最後の値を戻します。

SQL構文

LAST_VALUE (Expression [IGNORE NULLS]) OVER (AnalyticClause)

パラメータ

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

パラメータ 説明
Expression サポートされるExpressionsの詳細は、「分析関数」を参照してください。
IGNORE NULLS LAST_VALUEが、集合内の最後のNULL以外の値を戻し、集合内のすべての値がNULLの場合はNULLを戻すようにするにはIGNORE NULLSを指定します。句はオプションです。
OVER (AnalyticClause) 構文、セマンティクスおよび制限の詳細は、「分析関数」を参照してください。

説明

  • 集合内の最後の値がNULLの場合、IGNORE NULLSを指定していないかぎり、LAST_VALUENULLを戻します。関数が、集合内の最後のNULL以外の値を戻し、集合内のすべての値がNULLの場合はNULLを戻すようにするには、IGNORE NULLSを指定します。

LAST_VALUE関数を使用して、給与が最も高い従業員の雇用開始日を各行に戻します。

Command> SELECT last_name, salary, hire_date,
           LAST_VALUE (hire_date) OVER (ORDER BY salary
           ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS lv
         FROM
           (SELECT * FROM employees WHERE department_id = 90 ORDER BY hire_date)
         ORDER BY last_name, salary, hire_date, lv;
< De Haan, 17000, 1993-01-13 00:00:00, 1987-06-17 00:00:00 >
< King, 24000, 1987-06-17 00:00:00, 1987-06-17 00:00:00 >
< Kochhar, 17000, 1989-09-21 00:00:00, 1987-06-17 00:00:00 >
3 rows found.

LEAST

LEAST関数は、1つ以上の式のリストのうち、最小のものを戻します。

SQL構文

LEAST (Expression [,...])

パラメータ

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

パラメータ 説明
Expression [,...] 最小の式の値を決定するために評価される1つ以上の式のリスト。オペランドまたは列には、数値、文字または日付を指定できます。リスト内の各式は、同じデータ型ファミリから採用する必要があります。

説明

  • リスト内の各式は、同じデータ型ファミリまたは日付サブファミリから採用する必要があります。データ型ファミリには、数値、文字および日付が含まれます。日付ファミリには、4つのサブファミリ(日付ファミリ、TIMEファミリ、TT_DATEファミリおよびTT_TIMESTAMPファミリ)が含まれます。たとえば、式のリストに数値式と文字式を指定することはできません。同様に、式のリストに日付式とTT_TIMESTAMP式を指定することはできません。

  • 最初のExpressionが数値の場合、TimesTenにより数値の優先順位が最も高い引数が決定されます。比較の前に、残りの引数は暗黙的にそのデータ型に変換され、そのデータ型が戻されます。

  • 最初のExpressionが文字ファミリに属しており、オペランドまたは列がCHARまたはVARCHAR2型の場合、戻されるデータ型はVARCHAR2です。オペランドまたは列がNCHARまたはNVARCHAR2型の場合、戻されるデータ型はNVARCHAR2です。戻されるデータ型の長さは、最も大きい式の長さに等しくなります。あるオペランドまたは列がCHARまたはVARCHAR2型で、別のオペランドまたは列がNCHARまたはNVARCHAR2の場合、戻されるデータ型はNVARCHAR2です。

  • TimesTenでは、文字ファミリのデータ型に対して非空白埋め比較セマンティクスが使用されます。

  • 最初の式が日付ファミリの場合、戻されるデータ型は、最初の式と同じデータ型です。

  • いずれかの式がNULLの場合、結果はNULLになります。

  • 最初のExpressionが文字ファミリに属しており、オペランドまたは列がTT_CHARまたはTT_VARCHAR型の場合、戻されるデータ型はTT_VARCHARです。オペランドまたは列がTT_NCHARまたはTT_NVARCHAR型の場合、戻されるデータ型はTT_NVARCHARです。戻されるデータ型の長さは、最も大きい式の長さに等しくなります。

  • 最大で256個の式を指定できます。

LEAST関数を使用して、最小値の文字列を戻します。

Command> SELECT LEAST ('SMALL','SMALLER','SMALLEST') FROM dual;
< SMALL >
1 row found.

LEAST関数を使用して、最小値の数値式を戻します。この例の場合、数値の優先順位が最も高いデータ型はNUMBERのため、比較の前に各引数は暗黙的にNUMBERに変換され、NUMBERデータ型が戻されます。最初に表leastexを記述し、列col1およびcol2に定義されているデータ型を確認します。次に、SELECT * FROM leastexを実行してデータを確認します。最後にLEAST関数を呼び出します。

Command> DESCRIBE leastex;

Table SAMPLEUSER.LEASTEX:
  Columns:
    COL1                            NUMBER (2,1)
    COL2                            TT_BIGINT

1 table found.
(primary key columns are indicated with *)
Command> SELECT * FROM leastex;
< 1.1, 1 >
1 row found.
Command> SELECT LEAST (Col2,Col1) from leastex;
< 1 >
1 row found.

DESCRIBEコマンドを使用して、戻されるデータ型がNUMBERであることを確認します。

Command> DESCRIBE SELECT LEAST (Col2,Col1) FROM leastex;

Prepared Statement:
  Columns:
    EXP                             NUMBER

LEAST関数を使用して、最小値のDATE式を戻します。DATEおよびTIMESTAMPは、同じ日付ファミリです。

Command> SELECT LEAST (DATE '2007-09-17', 
           TIMESTAMP '2007-09-17:10:00:00') FROM dual;
< 2007-09-17 00:00:00 >
1 row found.

LEAST関数を使用して、TT_DATE式およびTT_TIMESTAMP式のリスト内の最小値を戻そうと試みます。TT_DATETT_TIMESTAMPは異なる日付サブファミリに属しており、同じ式のリスト内では使用できないため、エラーが戻されます。

Command> SELECT LEAST (TT_DATE '2007-09-17',
           TT_TIMESTAMP '2007-09-17:01:00:00') FROM dual;
2817: Invalid data type TT_TIMESTAMP for argument 2 for function LEAST
The command failed.

LEAST関数を使用して、最小値のTIME式を戻します。

Command> SELECT LEAST (TIME '13:59:59', TIME '13:59:58',
           TIME '14:00:00') FROM dual;
< 13:59:58 >
1 row found.

LENGTH、LENGTHB、LENGTH4

式内の指定した文字列の長さを返します。LENGTHNUMBER型を返します。

SQL構文

{LENGTH|LENGTHB|LENGTH4} (CharExpr) 

パラメータ

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

パラメータ 説明
CharExpr 長さを返す対象の文字列です。サポートされるCharExprのデータ型は、CHARVARCHAR2NCHARまたはNVARCHAR2です。LENGTHおよびLENGTHBは、CLOBNCLOBおよびBLOBデータ型もサポートします。

説明

LENGTH関数は、CharExprの長さを戻します。LENGTHは、文字セットで定義された文字を使用して長さを計算します。LENGTHBは、文字数ではなくバイト数を使用します。LENGTH4には、UCS4コード・ポイントを使用します。

文字列'William'の長さを判別します。

Command> SELECT LENGTH('William') FROM dual;
< 7 >
1 row found.

次の例では、NCLOBデータの長さを判別します。

Command> SELECT nclob_column FROM nclob_content;
< Demonstration of the NCLOB data type >
1 row found.

Command> SELECT LENGTH(nclob_column) FROM nclob_content;
< 36 >
1 row found.

LN

LN関数は、Expressionの自然対数を返します。Expressionの値は0より大きい値です。

SQL構文

LN(Expression)

パラメータ

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

パラメータ 説明
Expression オペランドまたは列は、任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。

説明

  • ExpressionNUMBER型の場合、戻されるデータ型はNUMBERです。他のすべての数値データ型の場合、戻されるデータ型はBINARY_DOUBLEです。

  • Expressionの値がNULLの場合、NULLが戻されます。

LN関数を使用して、95の自然対数を返します。

Command> SELECT LN(95) "Natural logarithm of 95" FROM dual;
< 4.55387689160054083460978676511404117675 >
1 row found.

LOG

LOG関数は、Expression1の対数(底Expression2)を返します。底Expression2には、0または1以外の任意の正の値を指定でき、Expression1には任意の正の値を指定できます。

SQL構文

LOG(Expression1,Expression2)

パラメータ

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

パラメータ 説明
Expression1 オペランドまたは列は、任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。
Expression2 オペランドまたは列は、任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。

説明

  • Expression1またはExpression2NUMBER型の場合、戻されるデータ型はNUMBERです。他のすべての数値データ型の場合、戻されるデータ型はBINARY_DOUBLEです。

  • Expression1またはExpression2の値がNULLであるか、Expression1Expression2の両方がNULLである場合、NULLが返されます。

LOG関数を使用して、100の自然対数を返します。

Command> SELECT LOG(10,100) "Log base 10 of 100" FROM dual;
< 2 >
1 row found.

LOWERおよびUPPER

LOWER関数は、CHARNCHARVARCHAR2NVARCHAR2CLOBまたはNCLOB型の式を小文字に変換します。UPPER関数は、CHARNCHARVARCHAR2NVARCHAR2CLOBまたはNCLOB型の式を大文字に変換します。CHAR型およびVARCHAR2型では、文字セマンティクスがサポートされています。結果のデータ型は式のデータ型と同じです。

SQL構文

{UPPER | LOWER} (Expression1)

パラメータ

LOWERおよびUPPERには、次のパラメータがあります。

パラメータ 説明
Expression1 小文字(LOWERを使用した場合)または大文字(UPPERを使用した場合)に変換される式。

説明

LOWER(?)およびUPPER(?)はサポートされませんが、CAST演算子と組み合せることができます。次に例を示します。

LOWER(CAST(? AS CHAR(30))) 

Command> SELECT LOWER (last_name) FROM employees WHERE employee_id = 100;
< king >
1 row found.

LPAD

LPAD関数は、左側がExpression2の連続文字で埋め込まれたn文字の長さのExpression1を戻します。この関数は、問合せの出力を書式設定する場合に役立ちます。

SQL構文

LPAD (Expression1, n [,Expression2])

パラメータ

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

パラメータ 説明
Expression1 左側を文字で埋め込むCHARVARCHAR2NCHARNVARCHAR2CLOBNCLOBオペランドまたは列。Expression1nより長い場合、LPADでは、nに一致するExpression1の一部分が戻されます。
n LPAD関数で戻される文字の長さ。NUMBER型の整数、またはNUMBER型の整数に暗黙的に変換可能な値である必要があります。
Expression2 Expression1の左側を埋め込む連続文字。Expression2を指定しない場合、デフォルトで単一の空白文字に設定されます。オペランドまたは列には、CHARVARCHAR2NCHARNVARCHAR2CLOBまたはNCLOB型を指定できます。

説明

  • Expression1CHARまたはVARCHAR2型の場合、戻されるデータ型はVARCHAR2です。Expression1NCHARまたはNVARCHAR2型の場合、戻されるデータ型はNVARCHAR2です。Expression1がLOBの場合、戻されるデータ型は指定されたLOBデータ型と同じになります。

  • nが定数の場合、戻されるデータ型の長さはnに等しくなります。それ以外の場合、結果の最大長である8300が戻されます。

  • Expression1Expression2には、TT_CHARTT_VARCHARTT_NCHARおよびTT_NVARCHARを指定できます。Expression1TT_CHARまたはTT_VARCHAR型の場合、戻されるデータ型はTT_VARCHARです。Expression1TT_NCHARまたはTT_NVARCHAR型の場合、戻されるデータ型はTT_NVARCHARです。

  • CHARVARCHAR2NCHARNVARCHAR2CLOBまたはNCLOBデータ型の場合:

    • Expression1またはExpression2のいずれかがNULLの場合、結果はNULLです。n0(ゼロ)以下の場合も、結果はNULLです。

  • TT_CHARTT_VARCHARTT_NCHARおよびTT_NVARCHAR型の場合:

    • Expression1またはExpression2のいずれかがNULLではなく、nが0(ゼロ)以下の場合、結果は空の文字列です。

次の例では、20文字になるように左側をピリオドで埋め込んだ、最初の5人の従業員の名前を出力します。

Command> SELECT FIRST 5 LPAD (last_name, 20, '.') 
         FROM employees
         ORDER BY last_name;
< ................Abel >
< ................Ande >
< ............Atkinson >
< ..............Austin >
< ................Baer >
5 rows found.

LPAD関数を使用して、文字列'LPAD Function'の左側を文字列'DEMO-ONLY'と2個の空白で埋め込みます。文字列DEMO-ONLYは、関数によって文字出力合計で定義された回数(3回)繰り返されます。

Command> SELECT LPAD ('LPAD Function', 46, 'DEMO-ONLY  ') FROM dual;
< DEMO-ONLY  DEMO-ONLY  DEMO-ONLY  LPAD Function >
1 row found.

長さ-1を使用してLPAD関数をコールします。NULLが戻されます。

Command> SELECT LPAD ('abc', -1, 'a')  FROM dual;
< <NULL> >
1 row found.

LTRIM

LTRIM関数は、Expression1の左端から、Expression2に含まれるすべての文字を削除します。TimesTenでは、Expression1の最初の文字からスキャンが開始され、Expression2に存在しない文字になるまでExpression2に指定した文字がすべて削除された後、結果が戻されます。

SQL構文

LTRIM (Expression1 [,Expression2])

パラメータ

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

パラメータ 説明
Expression1 切捨ての対象とするCHARVARCHAR2NCHARNVARCHAR2CLOBNCLOBオペランドまたは列。Expression1が文字リテラルの場合、一重引用符でその文字を囲みます。
Expression2 Expression1の切捨てに使用するオプションの式。Expression2が文字リテラルの場合、一重引用符でその文字を囲みます。Expression2を指定しない場合、デフォルトで単一の空白文字に設定されます。オペランドまたは列には、CHARVARCHAR2NCHARNVARCHAR2CLOBまたはNCLOB型を指定できます。

説明

  • Expression1CHARまたはVARCHAR2型の場合、戻されるデータ型はVARCHAR2です。Expression1NCHARまたはNVARCHAR2型の場合、戻されるデータ型はNVARCHAR2です。Expression1CLOBまたはNCLOBの場合、戻されるデータ型は指定されたLOBデータ型と同じになります。戻されるデータ型の長さは、Expression1のデータ型の長さに等しくなります。

  • Expression1CHAR長セマンティクスで定義されたデータ型の場合、戻される長さはCHAR長セマンティクスで表現されます。

  • Expression1またはExpression2のいずれかがNULLの場合、結果はNULLです。

  • Expression1Expression2には、TT_CHARTT_VARCHARTT_NCHARおよびTT_NVARCHARを指定できます。Expression1TT_CHARまたはTT_VARCHAR型の場合、戻されるデータ型はTT_VARCHARです。Expression1TT_NCHARまたはTT_NVARCHAR型の場合、戻されるデータ型はTT_NVARCHARです。

  • Expression1CHARまたはVARCHAR2型で、Expression2NCHARまたはNVARCHAR2型の場合、Expression2LTRIMの実行前にCHARまたはVARCHAR2に変換されます。Expression2の変換は失われる可能性があります。Expression2の切捨て文字がデータベースの文字セットに含まれない場合、問合せにより予期しない結果が発生する可能性があります。

  • CHARVARCHAR2NCHARNVARCHAR2CLOBまたはNCLOB型の場合:

    • Expression1のすべての文字がLTRIM関数により削除された場合、結果はNULLになります。

  • TT_CHARTT_VARCHARTT_NCHARおよびTT_NVARCHAR型の場合:

    • Expression1のすべての文字がLTRIM関数により削除された場合、結果は空の文字列になります。

LTRIM関数をコールして、左端の'x'および'y'を文字列から削除します。LTRIMは、'xy'というパターンではなく、個々に出現する'x''y'を削除します。

Command> SELECT LTRIM ('xxxyyyxyxyLTRIM Example', 'xy') FROM dual;
< LTRIM Example >
1 row found.

LTRIM関数をコールして、SYSDATEからYYYY-MM-DDを削除します。TO_CHARをコールして、SYSDATEVARCHAR2に変換します。

Command> SELECT LTRIM (TO_CHAR(SYSDATE), '2007-08-21') FROM dual;
<  22:54:39 >
1 row found.

LTRIMをコールして、Expression1からすべての文字を削除します。最初の例では、データ型がCHARであるため、NULLが戻されます。2番目の例では、データ型がTT_CHARであるため、空の文字列が戻されます。

Command> CREATE TABLE ltrimtest (col1 CHAR (4), col2 TT_CHAR (4));
Command> INSERT INTO ltrimtest VALUES ('ABBB','ABBB');
1 row inserted.
Command> SELECT LTRIM (col1, 'AB') FROM ltrimtest;
< <NULL> >
1 row found.
Command> SELECT LTRIM (col2, 'AB') FROM ltrimtest;
<  >
1 row found.

MAX

引数の値の最大値を検索します(英数字型のASCII比較)。NULL値は無視されます。MAXは、数値、文字およびBINARYデータ型に適用できます。MAXは集計関数で、集計分析関数にもなります。集計関数の詳細は、「集計関数」を参照してください。分析関数の詳細は、「分析関数」を参照してください。

SQL構文

MAX ([ALL | DISTINCT]{Expression | ROWID}) [OVER ([AnalyticClause])]

パラメータ

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

パラメータ 説明
Expression 任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。
ALL 集計関数の引数に重複する行を含めます。ALLまたはDISTINCTのいずれも指定しない場合、ALLとみなされます。
DISTINCT 集計関数の引数から、重複する列の値を削除します。
ROWID TimesTenでは、表に保存される各行にROWIDと呼ばれる一意のIDが割り当てられます。ROWID値はROWID擬似列から取得されます。詳細は、「ROWID疑似列」を参照してください。
OVER ([AnalyticClause]) 指定すると、集計分析関数を示します。分析関数の詳細は、「分析関数」を参照してください。

説明

  • GROUP BYが使用されていない空の表でMAXを計算すると、MAXNULLを戻します。

  • 空のグループまたはグループ化された空の表(GROUP BYを使用)でMAXを計算すると、MAXは何も戻しません。

  • 結果のデータ型はソースと同じになります。

  • 問合せでAnalyticClauseを使用しない場合、MAXは集計関数として機能します。

最高給与を検索します。

Command> SELECT MAX(salary) "Max Salary" FROM employees;
 
MAX SALARY
< 24000 >
1 row found.

MIN

引数の値の最小値を検索します(英数字型のASCII比較)。NULL値は無視されます。MINは、数値、文字およびBINARYデータ型に適用できます。集計関数の詳細は、「集計関数」を参照してください。MINは、集計分析関数にもなります。分析関数の詳細は、「分析関数」を参照してください。

SQL構文

 MIN ([ALL | DISTINCT]{Expression|ROWID}) [OVER (AnalyticClause)]

パラメータ

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

パラメータ 説明
Expression 任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。
ALL 集計関数の引数に重複する行を含めます。ALLまたはDISTINCTのいずれも指定しない場合、ALLとみなされます。
DISTINCT 集計関数の引数から、重複する列の値を削除します。
ROWID TimesTenでは、表に保存される各行にROWIDと呼ばれる一意のIDが割り当てられます。ROWID値はROWID擬似列から取得されます。詳細は、「ROWID疑似列」を参照してください。
OVER (AnalyticClause) 指定すると、集計分析関数を示します。分析関数の詳細は、「分析関数」を参照してください。

説明

  • GROUP BYが使用されていない空の表でMIN関数を計算すると、MINNULLを戻します。

  • 空のグループまたはグループ化された空の表(GROUP BYを使用)でMIN関数を計算すると、MINは何も戻しません。

  • 結果のデータ型はソースと同じになります。

  • 問合せでAnalyticClauseを使用しない場合、MINは集計関数として機能します。

最低給与を示します。

Command> SELECT MIN(salary) "Min Salary" FROM employees;
 
MIN SALARY
< 2100 >

最初の雇用日を示します。

Command> SELECT MIN(hire_date) "Earliest Hire Date" FROM employees;
 
EARLIEST HIRE DATE
< 1987-06-17 00:00:00 >
1 row found.

MOD

あるINTEGER式を2番目のINTEGER式で除算した余りを返します。

SQL構文

MOD(Expression1, Expression2)

パラメータ

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

パラメータ 説明
Expression1 INTEGER式。
Expression2 INTEGER式。

説明

  • MODExpression1Expression2で除算した余りを返します。

  • Expression20の場合、MODExpression1を返します。

  • Expression1Expression2のいずれかがNULLであれば、MODNULLを返します。

  • MODはバイナリ算術演算として扱われるため、戻り型は第1章「データ型」に説明する規則に従って決まります。

  • MOD関数の動作は、2つのオペランドのいずれかが負の場合には古典数学のモジュール関数とは異なる動作をします。次の表に、その違いを示します。

    M N 古典数学のモジュール関数 MOD(M,N)
    11 3 2 2
    11 -3 -1 2
    -11 3 1 -2
    -11 -3 -2 -2

次の例では、式mの値が式nの値で割り切れるかどうかをテストします。

SELECT m, n FROM test WHERE MOD(m, n) = 0;

MONTHS_BETWEEN

MONTHS_BETWEEN関数は、日付date1date2の間の月数を戻します。

SQL構文

MONTHS_BETWEEN(date1, date2)

パラメータ

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

パラメータ 説明
date1 日時値、または日時値に変換可能な任意の値。
date2 日時値、または日時値に変換可能な任意の値。

説明

入力パラメータは、TIMEまたはTT_TIMEデータ型を除き、サポートされているすべての日時データ型の組合せになります。サポートされている日時データ型は、DATETIMESTAMPTT_DATETT_TIMESTAMPORA_DATEおよびORA_TIMESTAMPです。すべての日時データ型の詳細は、第1章「データ型」を参照してください。

戻りデータ型は、NUMBERです。

MONTHS_BETWEENは、日付date1date2の間の月数を戻します。

  • date1date2より後の日付の場合、結果は正の値になります。

  • date1date2より前の日付の場合、結果は負の値になります。

  • date1およびdate2が、両方とも月の同じ日または月の最終日の場合、戻される結果は整数になります。それ以外の場合、戻される結果は、date1date2のパラメータの時刻部分の差を考慮した1か月31日を基準とする小数になります。

次の例では、2つの日付間の月数を計算します。

Command> SELECT MONTHS_BETWEEN(DATE '1995-02-02', DATE '1995-01-01') 
           AS Months FROM dual;
 
MONTHS
< 1.03225806451613 >
1 row found. 

Command> SELECT MONTHS_BETWEEN(DATE '2010-02-02', DATE '2010-10-01') "Months"
         FROM dual;
 
MONTHS
< -7.96774193548387 >
1 row found.
 

次のコマンドでは、CASTを使用し、CHAR文字列を明示的にタイムスタンプに変換します。最初の結果は整数に丸められます。

Command> SELECT ROUND ( MONTHS_BETWEEN (CAST ('2010-04-15 14:13:52' 
           AS TIMESTAMP), CAST ('2000-12-31 00:00:00' AS TIMESTAMP))), 
           MONTHS_BETWEEN (CAST ('2010-04-15 14:13:52' AS TIMESTAMP), 
           CAST ('2000-12-31 00:00:00' AS TIMESTAMP)) 
         FROM dual;

< 112, 111.502998805257 >
1 row found.

NCHR

NCHR関数は、指定されたUnicode値を持つ文字を戻します。

SQL構文

NCHR(n)

パラメータ

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

パラメータ 説明
n 指定されたUnicode値。このUnicode値を持つ文字が戻されます。結果のデータ型はNVARCHAR2型になります。

次の例では、NCHAR文字187が戻されます。

Command> SELECT NCHR(187) FROM dual;
< > >
1 row found.

NLS_CHARSET_ID

NLS_CHARSET_IDは、文字セット名に対応する文字セットID番号を戻します。


ノート:

サポートされている文字セットの完全なリストは、『Oracle TimesTen In-Memory Databaseリファレンス』のサポートされている文字セットに関する説明を参照してください。

SQL構文

NLS_CHARSET_ID(String)

パラメータ

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

パラメータ 説明
String 入力文字列の引数は、文字セットを表す実行時のVARCHAR2値です。この文字列では、大文字と小文字は区別されません。

入力文字列がTimesTenの有効な文字セットに対応している場合は関連する文字セットID番号が戻され、対応していない場合はNULLが戻されます。

CHAR_CSを指定すると、データベース文字セットID番号が戻されます。NCHAR_CSを指定すると、各国語文字セットID番号が戻されます。他の入力文字列値は、AL32UTF8などのOracle Database NLSの文字セット名として解釈されます。


次の例では、文字セットUS7ASCIIの文字セットID番号を戻します。

Command> SELECT nls_charset_id('US7ASCII') FROM dual;
< 1 >
1 row found.

NLS_CHARSET_IDの結果をNLS_CHARSET_NAMEへの入力として使用する、次の項「NLS_CHARSET_NAME」の例も参照してください。

NLS_CHARSET_NAME

NLS_CHARSET_NAMEは、文字セットID番号に対応する文字セット名を戻します。


ノート:

サポートされている文字セットの完全なリストは、『Oracle TimesTen In-Memory Databaseリファレンス』のサポートされている文字セットに関する説明を参照してください。

SQL構文

NLS_CHARSET_NAME(Number)

パラメータ

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

パラメータ 説明
Number 文字セットIDを表す番号。番号がTimesTenの有効な文字セットIDに対応していない場合、NULLが戻されます。

説明

文字セット名は、データベース文字セットのVARCHAR2値として戻されます。

次の例では、文字セットID番号1に対応するデータベース文字セットを戻します。

Command> SELECT nls_charset_name(1) FROM dual;
< US7ASCII >
1 row found.

次の例では、結果がNLS_CHARSET_NAME関数に指定されるNLS_CHARSET_ID関数内の文字セット名としてCHAR_CSを指定することで、データベース文字セットの名前を判別して、同じ結果を取得します。

SELECT NLS_CHARSET_NAME(NLS_CHARSET_ID('CHAR_CS')) FROM dual;
< US7ASCII >
1 row found.

関連情報は、前の項「NLS_CHARSET_ID」を参照してください。

NLSSORT

指定された文字列に対してソート・キー値を戻します。

SQL構文

NLSSORT (String [,'NLS_SORT = SortName'])

パラメータ

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

パラメータ 説明
String Stringを指定すると、NLSSORTによって、Stringをソートするために使用されるソート・キー値が戻されます。Stringにサポートされているデータ型は、CHARVARCHAR2NCHARNVARCHAR2CLOBおよびNCLOBです。
['NLS_SORT = SortName'] SortNameは、言語ソート順序またはBINARYのいずれかです。このパラメータを省略すると、現在のセッションのデフォルトのソート順序が使用されます。アクセントを区別しないソートの場合は接尾辞-aiを、大/小文字を区別しないソートの場合は-ciSortNameの末尾に追加します。指定可能な言語のSortName値の詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のサポートされている言語ソートに関する説明を参照してください。

説明

  • 戻されるソート・キー値のデータ型はVARBINARY型になります。

  • 言語比較用に言語索引を作成できます。

次の例は、文字列のバイナリ値ではなく、言語ソート順序に基づいたソートおよび比較の処理を示しています。また、この例は、ALTER SESSION... SET NLS_SORT文を使用することによって同じ結果が得られることも示しています。

Command> CREATE TABLE nsortdemo (name VARCHAR2 (15));
Command> INSERT INTO nsortdemo VALUES ('Gaardiner');
1 row inserted.
Command> INSERT INTO nsortdemo VALUES ('Gaberd');
1 row inserted.
Command> INSERT INTO nsortdemo VALUES ('Gaasten');
1 row inserted.
Command> -- Perform Sort
Command> SELECT * FROM nsortdemo ORDER BY name;
< Gaardiner >
< Gaasten >
< Gaberd >
3 rows found.
Command> -- Use function to perform sort
Command> SELECT * FROM nsortdemo ORDER BY NLSSORT (name, 'NLS_SORT = XDanish');
< Gaberd >
< Gaardiner >
< Gaasten >
3 rows found.
Command> --comparison operation
Command> SELECT * FROM nsortdemo where Name > 'Gaberd';
< Gardiner >
1 row found.
Command> -- Use function in comparison operation
Command> SELECT * FROM nsortdemo WHERE NLSSORT (name, 'NLS_SORT = XDanish') >
           NLSSORT ('Gaberd', 'NLS_SORT = XDanish');
< Gaardiner >
< Gaasten >
2 rows found.
Command> -- Use ALTER SESSION to obtain the same results
Command> ALTER SESSION SET NLS_SORT = 'XDanish';
Session altered.
Command> SELECT * FROM nsortdemo ORDER BY name;
< Gaberd >
< Gaardiner >
< Gaasten >
3 rows found.
Command> SELECT * FROM nsortdemo WHERE name > 'Gaberd';
< Gaardiner >
< Gaasten >
2 rows found.

次の例では、言語索引を作成します。

Command> CREATE INDEX danishindex 
         ON nsortdemo (NLSSORT (name, 'NLS_SORT =XDanish'));
Command> INDEXES N%;
Indexes on table USER1.NSORTDEMO:
  DANISHINDEX: non-unique range index on columns:
    NLSSORT(NAME,'NLS_SORT = XDanish')
  1 index found.
1 index found on 1 table.

NULLIF

NULLIFは、2つの式を比較します。値が同じ場合、NULLIFNULLを戻し、異なる場合は最初の式を戻します。

SQL構文

NULLIF(Expression1, Expression2)

パラメータ

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

パラメータ 説明
Expression1 Expression2と等しいかどうかを判断するためにテストされる式。Expression1には、リテラルNULLを指定できません。
Expression2 Expression1と等しいかどうかを判断するためにテストされる式。

説明

  • 両方のパラメータが数値データ型の場合、Timestenは、数値の優先順位が高い方の引数を判断し、残りの引数をこのデータ型に暗黙的に変換して、このデータ型を戻します。パラメータが数値データ型ではない場合、それらのデータ型ファミリは同じである必要があります。

  • LOBデータ型は、NULLIFでサポートされません。TIMEデータ型は、両方の列がTIMEデータ型の場合のみサポートされます。

  • NULLIFファンクションは、次のCASE式と論理的に同じです。

    CASE WHEN Expression1 = Expression2 THEN NULL ELSE Expression1 END
    

ノート:

詳細は、「CASE式」を参照してください。

次の例では、入社時から職務が変わった従業員を選択し、job_history表のjob_idemployees表の現在のjob_idが異なる場合は職務が変わったことがわかります。NULLIFを新旧のjob_idエントリに適用すると、エントリが同じ場合はNULLが戻され、異なる場合は職種を変更した従業員が示されます。

Command> SELECT e.last_name, NULLIF(e.job_id, j.job_id) "Old Job ID" 
         FROM employees e, job_history j 
         WHERE e.employee_id = j.employee_id 
         ORDER BY last_name, "Old Job ID";

< De Haan, AD_VP >
< Hartstein, MK_MAN >
< Kaufling, ST_MAN >
< Kochhar, AD_VP >
< Kochhar, AD_VP >
< Raphaely, PU_MAN >
< Taylor, SA_REP >
< Taylor, <NULL> >
< Whalen, AD_ASST >
< Whalen, <NULL> >
10 rows found.

NUMTODSINTERVAL

数または式をINTERVAL DAY TO SECOND型に変換します。

SQL構文

NUMTODSINTERVAL (Expression1, IntervalUnit)

パラメータ

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

パラメータ 説明
Expression1 この引数には、任意のNUMBER値または暗黙的にNUMBER値に変換できる式のいずれかを指定できます。
IntervalUnit 'DAY'、'HOUR'、'MINUTE'または'SECOND'のいずれかの文字列定数です。

SYSDATEとともにNUMTODSINTERVALを使用する例です。

Command> SELECT SYSDATE + NUMTODSINTERVAL(20,'SECOND') FROM dual;
< 2007-01-28 09:11:06 >

NUMTOYMINTERVAL

数または式をINTERVAL YEAR TO MONTH型に変換します。

SQL構文

NUMTOYMINTERVAL (Expression1, 'IntervalUnit')

パラメータ

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

パラメータ 説明
Expression1 この引数には、任意のNUMBER値または暗黙的にNUMBER値に変換できる式のいずれかを指定できます。
IntervalUnit 'YEAR'または'MONTH'のいずれかの文字列定数です。

NUMTOYMINTERVALを使用する例です。

Command> SELECT SYSDATE + NUMTOYMINTERVAL(1,'MONTH') FROM dual;
< 2007-02-28 09:23:28 >
1 row found.

NVL

NVL関数は、NULL値を2番目の値に置き換えます。

SQL構文

NVL(Expression1, Expression2)

パラメータ

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

パラメータ 説明
Expression1 値がNULLであるかをテストする式で、CHARVARCHAR2NCHARNVARCHAR2CLOBNCLOBまたはBLOB式を指定できます。
Expression2 Expression1の値がNULLの場合に使用されるかわりの値で、CHARVARCHAR2NCHARNVARCHAR2CLOBNCLOBまたはBLOB式を指定できます。

説明

  • Expression1Expression2のデータ型には互換性がある必要があります。データ型が異なる場合、可能であればデータ型を暗黙的に変換します。暗黙的に変換できない場合、エラーが戻されます。

    次に、データ型を暗黙的に変換する方法について説明します。

    • Expression1が文字データの場合、Expression2Expression1と同じデータ型に変換し、Expression1の文字セットのVARCHAR2で結果を戻します。

    • Expression1が数値の場合、TimesTenでは数値の優先順位が最も高い式が判断され、もう一方の引数がそのデータ型に暗黙的に変換されて、そのデータ型が戻されます。

  • Expression1NULLの場合、NVL関数はExpression2を返します。Expression1NOT NULLの場合、NVL関数はExpression1を返します。

  • NVL関数は、SELECTUPDATEDELETE文のWHERE句またはHAVING句、およびSELECT文のSELECTリストにおいて使用できます。

この例では、姓がBで始まる従業員に対して、commission_pctのNULL値を確認し、それらの値を'Not Applicable'に置き換えます。

Command> SELECT last_name, NVL(TO_CHAR(commission_pct), 'Not Applicable')
         FROM employees 
         WHERE last_name LIKE 'B%'
         ORDER BY last_name;

< Baer, Not Applicable >
< Baida, Not Applicable >
< Banda, .1 >
< Bates, .15 >
< Bell, Not Applicable >
< Bernstein, .25 >
< Bissot, Not Applicable >
< Bloom, .2 >
< Bull, Not Applicable >
9 rows found.

POWER

POWER関数は、BaseExponent乗を戻します。BaseExponentには任意の数値を指定できますが、Baseが負数の場合、Exponentは整数である必要があります。

SQL構文

POWER (Base, Exponent)

パラメータ

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

パラメータ 説明
Base オペランドまたは列には、任意の数値型を指定できます。POWERにより、この値のExponent乗が戻されます。
Exponent オペランドまたは列には、任意の数値型を指定できます。Baseが負数の場合、Exponentは整数である必要があります。

説明

BaseまたはExponentのいずれかがBINARY_FLOATまたはBINARY_DOUBLE型の場合、戻されるデータ型はBINARY_DOUBLEです。BaseNUMBER型で、ExponentBINARY_FLOATまたはBINARY_DOUBLE型ではない場合、戻されるデータ型は、最大の精度およびスケールを持つNUMBERです。BaseがTT*数値型のいずれか(TT_BIGINTTT_INTEGERTT_SMALLINTまたはTT_TINYINT)である場合、戻されるデータ型はBINARY_DOUBLEです。

POWER関数を使用して、employee_idが145に等しい従業員のcommission_pctを2乗して戻します。

Command> SELECT employee_id, commission_pct FROM employees 
         WHERE employee_id = 145;

< 145, .4 >
1 row found.

Command> SELECT POWER (commission_pct,2) FROM employees 
         WHERE employee_id = 145;
< .16 >
1 row found.

RANK

RANK関数は、値のグループにおける値のランクを計算する分析関数です。

SQL構文

RANK () OVER ( [QueryPartitionClause] OrderByClause )

パラメータ

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

パラメータ 説明
QueryPartitionClause 構文、セマンティクスおよび制限の詳細は、「分析関数」を参照してください。
OrderByClause 構文、セマンティクスおよび制限の詳細は、「分析関数」を参照してください。

説明

  • 戻り型はNUMBERです。

  • そのランク付け基準に関して同じ値を持つ行は、同じランクになります。TimesTenは連結行の数を連結ランクに追加して、次のランクを計算します。そのため、ランクは連続した数値でない場合があります。

  • RANKは、ある問合せが戻す他の行について、その問合せが戻す各行のランクを計算します。この計算は、OrderByClauseの式の値に基づいて行われます。

RANK関数を使用して、給与や歩合に基づいて部門80の最初の10人の従業員をランク付けします。給与が同じ場合は同じランクになるため、連続しないランクになります。

Command> SELECT first 10 department_id, last_name, salary, commission_pct,
           RANK() OVER (PARTITION BY department_id
           ORDER BY salary DESC, commission_pct) "Rank"
         FROM employees WHERE department_id = 80
         ORDER BY department_id, last_name, salary, commission_pct, "Rank";
< 80, Abel, 11000, .3, 5 >
< 80, Ande, 6400, .1, 31 >
< 80, Banda, 6200, .1, 32 >
< 80, Bates, 7300, .15, 26 >
< 80, Bernstein, 9500, .25, 14 >
< 80, Bloom, 10000, .2, 9 >
< 80, Cambrault, 7500, .2, 23 >
< 80, Cambrault, 11000, .3, 5
< 80, Doran, 7500, .3, 24 >
< 80, Errazuriz, 12000, .3, 3 >
10 rows found.

REPLACE

REPLACEは、指定した文字列の連続文字を別の文字列に置換するか、文字列をすべて削除します。

SQL構文

REPLACE (String, SearchString [,ReplacementString] )

パラメータ

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

パラメータ 説明
String 置換するサブストリングを含むソース文字列。
SearchString 元の文字列で置換される文字列。SearchStringNULLの場合、元のStringが変更されずに戻されます。
ReplacementString 元の文字列に出現するすべての検索文字列の置換に使用される文字列。ReplacementStringが省略されているかNULLの場合、出現するすべてのSearchStringはソースStringから削除されます。

説明

  • REPLACEは、出現するすべてのSearchStringをソースStringReplacementStringに置換する文字列を戻します。

  • StringSearchStringおよびReplacementStringには、CHARVARCHAR2NCHARNVARCHAR2CLOBまたはNCLOBデータ型を指定できます。TimesTenデータ型およびOracle Databaseデータ型の両方がサポートされます。BLOBを除く文字ではないすべてのデータ型は、暗黙的に文字列データ型に変換されます。

  • StringCHARまたはVARCHAR2の場合、戻される文字列はVARCHAR2データ型です。StringNCHARまたはNVARCHAR2の場合、戻される文字列はNVARCHAR2データ型です。CLOBまたはNCLOBデータ型では、戻されるデータ型はStringで指定されるデータ型と同じになります。文字セットは、ソースStringと同じになります。

  • 戻される文字列の長さが0(ゼロ)の場合、NULLがOracle Database データ型に戻され、長さ0(ゼロ)の文字列がTimesTenデータ型に戻されます。すべてのデータ型の詳細は、第1章「データ型」を参照してください。

次の例では、Canadaのすべての場所を出力し、国コードCAをCanadaに置換して読みやすくします。

Command> SELECT location_id, street_address,
           city, state_province, postal_code,
         REPLACE(country_id, 'CA', 'Canada') 
         FROM LOCATIONS 
         WHERE country_id LIKE 'CA';

< 1800, 147 Spadina Ave, Toronto, Ontario, M5V 2L7, Canada >
< 1900, 6092 Boxwood St, Whitehorse, Yukon, YSW 9T2, Canada >
2 rows found.

ROUND (日付)

書式モデルfmtで指定された単位に丸められた日付を戻します。戻される値の型はDATEです。fmtを指定しない場合、dateは最も近い日に丸められます。

SQL構文

ROUND (Date [,Fmt]) 

パラメータ

ROUND(日付)には、次のパラメータがあります。

パラメータ 説明
Date 丸められる日付。日付値に解決される必要があります。

fmtを指定しない場合、dateは最も近い日に丸められます。

[,Fmt] 書式モデルの丸め単位。fmtには、定数またはパラメータのいずれかを指定します。

説明

  • 日付には、DATEまたはTIMESTAMP型を指定できます。戻されるデータ型はDATEです。

  • データ型TT_DATEおよびTT_TIMESTAMPはサポートされていません。

  • fmtでの使用がサポートされる書式モデルの詳細は、「ROUNDおよびTRUNC日付関数の書式モデル」を参照してください。

書式モデルとして'YEAR'を指定し、Dateを翌年の最初の日に丸めます。

Command> SELECT ROUND (DATE '2007-08-25','YEAR') FROM dual;
< 2008-01-01 00:00:00 >
1 row found.

Fmtを省略します。Dateは時刻13:00:00を含むTIMESTAMP型として指定します。Dateは最も近い日に丸められます。

Command> SELECT ROUND (TIMESTAMP '2007-08-16 13:00:00') FROM dual;
< 2007-08-17 00:00:00 >
1 row found.

ROUND (式)

ROUND関数は、小数点の右側がExpression2の桁数に丸められたExpression1を戻します。

SQL構文

ROUND (Expression1 [,Expression2])

パラメータ

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

パラメータ 説明
Expression1 オペランドまたは列には、任意の数値型を指定できます。
Expression2 何桁に丸めるかを示すオペランドまたは列。負数を指定すると、小数点の左側のその桁を丸めることができます。Expression2を省略した場合、Expression1は小数部が0(ゼロ)桁になるように丸められます。この式は整数である必要があります。

説明

  • Expression2を省略した場合、戻されるデータ型はExpression1の数値データ型と同じになります。

  • Expression2を指定した場合、戻されるデータ型は、最大の精度およびスケールを持つNUMBERです。

  • Expression1BINARY_FLOATまたはBINARY_DOUBLE型の場合、Expression1の値は、最も近い偶数値に丸められます。それ以外の場合、Expression1の値は、0(ゼロ)から遠い方に丸められます(つまり、x.5が正数の場合はx+1に、x.5が負数の場合はx-1に丸められます)。

小数点の右側が2桁となるように数値を丸めます。

Command> SELECT ROUND (15.5555,2) FROM dual;
< 15.56 >
1 row found.

Expression2に負数を指定して小数点の左側で数値を丸めます。

Command> SELECT ROUND (15.5555,-1) FROM dual;
< 20 >
1 row found.

浮動小数点数を丸めます。浮動小数点数は、最も近い偶数値に丸められます。NUMBER型の式を丸める場合(正数の場合は値が切り上げられる)と比較してください。

Command> SELECT ROUND (1.5f), ROUND (2.5f) FROM dual;
< 2.00000000000000, 2.00000000000000 >
1 row found.
Command> SELECT ROUND (1.5), ROUND (2.5) FROM dual;
< 2, 3 >
1 row found.

ROW_NUMBER

ROW_NUMBER関数は分析関数で、OrderByClauseに指定された行の、1から始まる順序シーケンスで、この関数が適用される各行(パーティションの各行、または問合せが戻す各行)に一意の数値を割り当てます。

SQL構文

ROW_NUMBER () OVER ( [QueryPartitionClause] OrderByClause )

パラメータ

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

パラメータ 説明
QueryPartitionClause 構文、セマンティクスおよび制限の詳細は、「分析関数」を参照してください。
OrderByClause 構文、セマンティクスおよび制限の詳細は、「分析関数」を参照してください。

説明

  • ROWNUM擬似列は、表や結合処理された行の集合からTimesTenが行を選択する順序を示す番号を戻します。その一方、分析関数であるROW_NUMBERは、番号を割り当てる前に問合せの結果の順序付けを強力にサポートします。

  • 指定された範囲のROW_NUMBER値を取得する問合せ内に、ROW_NUMBERを使用した副問合せをネストすることで、内側の問合せの結果から正確な行のサブセットを得ることができます。一貫した結果を戻すには、問合せで決定的なソート順序を使用する必要があります。

  • 戻りデータ型は、NUMBERです。

ROW_NUMBERを使用すると、各部門の最も支給額の高い上位3人の従業員が戻されます。従業員が3人未満の部門については、3行未満の行が戻されます。

Command> SELECT FIRST 10 department_id, first_name, last_name, salary
         FROM
          (SELECT department_id, first_name, last_name, salary, ROW_NUMBER()
             OVER (PARTITION BY department_id ORDER BY salary desc) rn
           FROM employees )
         WHERE rn <= 3
         ORDER BY department_id, salary DESC, last_name;
< 10, Jennifer, Whalen, 4400 >
< 20, Michael, Hartstein, 13000 >
< 20, Pat, Fay, 6000 >
< 30, Den, Raphaely, 11000 >
< 30, Alexander, Khoo, 3100 >
< 30, Shelli, Baida, 2900 >
< 40, Susan, Mavris, 6500 >
< 50, Adam, Fripp, 8200 >
< 50, Matthew, Weiss, 8000 >
< 50, Payam, Kaufling, 7900 >
10 rows found.

RPAD

RPAD関数は、Expression2を必要な数だけ繰り返して右側を埋め込んだn文字の長さのExpression1を戻します。この関数は、問合せの出力を書式設定する場合に役立ちます。

SQL構文

RPAD (Expression1, n [,Expression2])

パラメータ

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

パラメータ 説明
Expression1 右側を文字で埋め込むCHARVARCHAR2NCHARNVARCHAR2CLOBNCLOBオペランドまたは列。Expression1nより長い場合、RPADでは、nに一致するExpression1の一部分が戻されます。
n RPAD関数で戻される文字の長さ。NUMBER型の整数、またはNUMBER型の整数に暗黙的に変換可能な値である必要があります。
Expression2 Expression1の右側を文字で埋め込むCHARVARCHAR2NCHARNVARCHAR2CLOBNCLOBオペランドまたは列。Expression2を指定しない場合、デフォルトで単一の空白文字に設定されます。

説明

  • Expression1CHARまたはVARCHAR2型の場合、戻されるデータ型はVARCHAR2です。Expression1NCHARまたはNVARCHAR2型の場合、戻されるデータ型はNVARCHAR2です。Expression1がLOBの場合、戻されるデータ型は指定されたLOBデータ型と同じになります。

  • nが定数の場合、戻されるデータ型の長さはnに等しくなります。それ以外の場合、結果の最大長である8300が戻されます。

  • Expression1Expression2には、TT_CHARTT_VARCHARTT_NCHARおよびTT_NVARCHARを指定できます。Expression1TT_CHARまたはTT_VARCHAR型の場合、戻されるデータ型はTT_VARCHARです。Expression1TT_NCHARまたはTT_NVARCHAR型の場合、戻されるデータ型はTT_NVARCHARです。

  • CHARVARCHAR2NCHARNVARCHAR2CLOBまたはNCLOBデータ型の場合:

    • Expression1またはExpression2のいずれかがNULLの場合、結果はNULLです。n0(ゼロ)以下の場合も、結果はNULLです。

  • TT_CHARTT_VARCHARTT_NCHARおよびTT_NVARCHAR型の場合:

    • Expression1またはExpression2のいずれかがNULLではなく、n0(ゼロ)以下の場合、結果は空の文字列です。

employees表のfirst_namelast_nameを連結します。RPAD関数をコールして、右側が空白文字で埋め込まれた長さ12のfirst_nameを戻し、もう一度RPADをコールして右側が空白文字で埋め込まれた長さ12のlast_nameを戻します。先頭の5行を選択します。

Command> SELECT FIRST 5 CONCAT (RPAD (first_name,12),
           RPAD (last_name,12)) FROM employees
              ORDER BY first_name, last_name;
< Adam        Fripp        >
< Alana       Walsh        >
< Alberto     Errazuriz    >
< Alexander   Hunold       >
< Alexander   Khoo         >
5 rows found.

RPAD関数をコールして、右側がドット文字('.')で埋め込まれた長さ20のlast_nameを戻します。employees表を使用して、先頭の5行を選択します。

Command> SELECT FIRST 5 RPAD (last_name,20,'.') FROM employees
           ORDER BY last_name;
< Abel................ >
< Ande................ >
< Atkinson............ >
< Austin.............. >
< Baer................ >
5 rows found.

RTRIM

RTRIM関数は、Expression1の右端から、Expression2に含まれるすべての文字を削除します。TimesTenでは、Expression1の最後の文字から逆方向にスキャンが開始され、Expression2に存在しない文字になるまでExpression2に指定した文字がすべて削除された後、結果が戻されます。

SQL構文

RTRIM (Expression1 [,Expression2])

パラメータ

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

パラメータ 説明
Expression1 切捨ての対象とするCHARVARCHAR2NCHARNVARCHAR2CLOBNCLOBオペランドまたは列。Expression1が文字リテラルの場合、引用符でその文字を囲みます。
Expression2 Expression1の切捨てに使用するオプションの式。Expression2が文字リテラルの場合、一重引用符でその文字を囲みます。Expression2を指定しない場合、デフォルトで単一の空白文字に設定されます。オペランドまたは列には、CHARVARCHAR2NCHARNVARCHAR2CLOBまたはNCLOB型を指定できます。

説明

  • Expression1CHARまたはVARCHAR2型の場合、戻されるデータ型はVARCHAR2です。Expression1NCHARまたはNVARCHAR2型の場合、戻されるデータ型はNVARCHAR2です。Expression1CLOBまたはNCLOBの場合、戻されるデータ型は指定されたLOBデータ型と同じになります。戻されるデータ型の長さは、Expression1のデータ型の長さに等しくなります。

  • Expression1CHAR長セマンティクスで定義されたデータ型の場合、戻される長さはCHAR長セマンティクスで表現されます。

  • Expression1またはExpression2のいずれかがNULLの場合、結果はNULLです。

  • Expression1Expression2には、TT_CHARTT_VARCHARTT_NCHARおよびTT_NVARCHARを指定できます。Expression1TT_CHARまたはTT_VARCHAR型の場合、戻されるデータ型はTT_VARCHARです。Expression1TT_NCHARまたはTT_NVARCHAR型の場合、戻されるデータ型はTT_NVARCHARです。

  • Expression1CHARまたはVARCHAR2型で、Expression2NCHARまたはNVARCHAR2型の場合、Expression2RTRIMの実行前にCHARまたはVARCHAR2に変換されます。Expression2の変換は失われる可能性があります。Expression2の切捨て文字がデータベースの文字セットに含まれない場合、問合せにより予期しない結果が発生する可能性があります。

  • CHARVARCHAR2NCHARNVARCHAR2CLOBおよびNCLOB型の場合:

    • Expression1のすべての文字がRTRIM関数により削除された場合、結果はNULLになります。

  • TT_CHARTT_VARCHARTT_NCHARおよびTT_NVARCHAR型の場合:

    • Expression1のすべての文字がRTRIM関数により削除された場合、結果は空の文字列になります。

次の例では、表rtrimtestcol1から後続の空白を削除します。

Command> CREATE TABLE rtrimtest (col1 VARCHAR2 (25));
Command> INSERT INTO rtrimtest VALUES ('abc     ');
1 row inserted.
Command> SELECT * FROM rtrimtest;
< abc      >
1 row found.
Command> SELECT RTRIM (col1) FROM rtrimtest;
< abc >
1 row found.

RTRIM関数をコールして、右端の'x'および'y'を文字列から削除します。RTRIMは、'xy'というパターンではなく、個々に出現する'x''y'を削除します。

Command> SELECT RTRIM ('RTRIM Examplexxxyyyxyxy', 'xy') FROM dual;
< RTRIM Example >
1 row found.

RTRIMをコールして、Expression1からすべての文字を削除します。最初の例では、データ型がCHARであるため、NULLが戻されます。2番目の例では、データ型がTT_CHARであるため、空の文字列が戻されます。

Command> CREATE TABLE rtrimtest (col1 CHAR (4), col2 TT_CHAR (4));
Command> INSERT INTO rtrimtest VALUES ('BBBA', 'BBBA');
1 row inserted.
Command> SELECT RTRIM (col1, 'AB') FROM rtrimtest;
< <NULL> >
1 row found.
Command> SELECT RTRIM (col2, 'AB') FROM rtrimtest;
<  >
1 row found.

SESSION_USER

データベースに現在接続しているTimesTenユーザーの名前を返します。

SQL構文

SESSION_USER

パラメータ

SESSION_USERにはパラメータがありません。

セッション・ユーザーの名前を返すには、次の文を使用します。

SELECT SESSION_USER FROM dual;

SIGN

SIGN関数は、Expressionの符号を戻します。

SQL構文

SIGN (Expression)

パラメータ

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

パラメータ 説明
Expression オペランドまたは列には、任意の数値データ型を指定できます。

説明

  • ExpressionNUMBER型の場合、戻されるデータ型は最大の精度およびスケールを持つNUMBERです。それ以外の場合、戻されるデータ型はTT_INTEGERです。

    バイナリの浮動小数点数ではない数値型の場合、符号は次のようになります。

    • -1: Expressionの値が0より小さい場合

    • 0: Expressionの値が0の場合

    • 1: Expressionの値が0より大きい場合

  • 浮動小数点数(BINARY_FLOATおよびBINARY_DOUBLE)の場合、このファンクションは数値の符号ビットを戻します。符号ビットは次のようになります。

    • -1: Expressionの値が0より小さい場合

    • +1: Expressionの値が0以上、またはExpressionの値がNaNに等しい場合

これらの例では、様々なデータ型を使用してSIGN関数の使用方法を具体的に示します。作成済の表signexに、異なるデータ型の列が定義されています。まず、表signexを記述し、各列のデータ型を確認します。次に、各列を選択してそれぞれの列の値を取得します。SIGN関数を使用して列の符号を戻します。

Command> DESCRIBE signex;

Table SAMPLEUSER.SIGNEX:
  Columns:
    COL1                            TT_INTEGER
    COL2                            TT_BIGINT
    COL3                            BINARY_FLOAT
    COL4                            NUMBER (3,2)

1 table found.
(primary key columns are indicated with *)
Command> SELECT col1 FROM signex;
< 10 >
< -10 >
< 0 >
3 rows found.
Command> SELECT SIGN (col1) FROM signex;
< 1 >
< -1 >
< 0 >
3 rows found.
Command> SELECT col2 FROM signex;
< 0 >
< -3 >
< 0 >
3 rows found.
Command> SELECT SIGN (col2) FROM signex;
< 0 >
< -1 >
< 0 >
3 rows found.
Command> SELECT col3 FROM signex;
< 3.500000 >
< -3.560000 >
< NAN >
3 rows found.
Command> SELECT SIGN (col3) FROM signex;
< 1 >
< -1 >
< 1 >
3 rows found.
Command> SELECT col4 FROM signex;
< 2.2 >
< -2.2 >
< 0 >
3 rows found.
Command> SELECT SIGN (col4) FROM signex;
< 1 >
< -1 >
< 0 >
3 rows found.

SIN

SIN関数は、Expressionのサイン(ラジアンで表された角度)を返します。

SQL構文

SIN(Expression)

パラメータ

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

パラメータ 説明
Expression オペランドまたは列は、任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。

説明

  • ExpressionNUMBER型の場合、戻されるデータ型はNUMBERです。他のすべての数値データ型の場合、戻されるデータ型はBINARY_DOUBLEです。

  • Expressionの値がNULLの場合、NULLが戻されます。

SIN関数を使用して、30度のサインを返します。

Command> SELECT SIN(30 * 3.14159265359/180) FROM dual;
< .5000000000000298434573127255848979959561 >
1 row found.

SINH

SINH関数は、Expressionのハイパボリック・サインを返します。

SQL構文

SINH(Expression)

パラメータ

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

パラメータ 説明
Expression オペランドまたは列は、任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。

説明

  • ExpressionNUMBER型の場合、戻されるデータ型はNUMBERです。他のすべての数値データ型の場合、戻されるデータ型はBINARY_DOUBLEです。

  • Expressionの値がNULLの場合、NULLが戻されます。

SINH関数を使用して、1のハイパボリック・サインを返します。

Command> SELECT SINH(1) "Hyperbolic sine of 1" FROM dual;
< 1.17520119364380145688238185059560081516 >
1 row found.

SOUNDEX

SOUNDEX関数は、文字列の音声シグネチャを判別し、発音が類似した文字列の比較を可能にします。SOUNDEXを使用すると、綴りが異なっても発音が類似した英単語を比較できます。

SQL構文

SOUNDEX (InputString)

パラメータ

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

パラメータ 説明
InputString 有効な値は、ORAおよびTTバリアントの付いたCHARVARCHAR2NCHARおよびNVARCHAR2CLOBおよびNCLOBです。データ型がCLOBまたはNCLOBの場合、TimesTenは結果を戻す前に暗黙的な変換を実行します。

説明

  • 英数字の文字列を、文字列の最初の文字で始まり3つの数字が続く4文字のコードに変換します。

  • 音声表現については、『The Art of Computer Programming, Volume 3: Sorting and Searching』(Donald E. Knuth著)で次のように定義されています。

    1. 文字列の最初の文字を残し、A、E、I、O、Uの文字が出てきた場合にはすべて削除します。文字の処理で大文字と小文字は区別されません。

    2. H、WおよびYが出てきた場合には、すべて削除します。

    3. 残った2文字目以降の文字に対し、次のように数値を割り当てます。

      B, F, P, V = 1
      C, G, J, K, Q, S, X, Z = 2
      D, T = 3
      L = 4
      M, N = 5
      R = 6
      
    4. 2つ以上の同じ数字を含む文字が元の名前内(ステップ1実行前の名前)で隣接している場合は、数字を1つ残してすべて削除します。

    5. 結果の最初の4文字を戻します(結果が4文字より少ない場合は'0'を埋め込みます)。

  • InputStringsoundexコードを作成できない場合、この関数はNULLを戻します。たとえば、InputStringに英字が含まれていない場合は、NULLが戻されます。

  • 入力型と出力型のマッピング:

    入力型 出力型
    VARCHAR2(x)、CHARCLOB VARCHAR2(4)
    TT_CHAR(x)、TT_VARCHAR(x) TT_VARCHAR(4)
    NVARCHAR2(x)、NCHAR(x)、NCLOB NVARCHAR2(4)
    TT_NCHAR(x)、TT_NVARCHAR(x) TT_NVARCHAR(4)

SOUNDEX関数を使用して、姓が'Taylor'である従業員の音声シグネチャを戻します。

Command> SELECT last_name, first_name, SOUNDEX (last_name)
         FROM employees where last_name = 'Taylor';
< Taylor, Jonathon, T460 >
< Taylor, Winston, T460 >
2 rows found.

この関数を再度呼び出して、文字列'Tailor'の音声シグネチャを戻します。この関数の3回目の呼出しを行い、姓の音声が文字列'Tailor'に類似した各従業員の姓名を戻します。

Command> SELECT SOUNDEX ('Tailor') FROM dual;
< T460 >
1 row found.

Command> SELECT last_name, first_name FROM employees WHERE SOUNDEX (last_name) = 
           SOUNDEX ('Tailor');
< Taylor, Jonathon >
< Taylor, Winston >
2 rows found.

SQRT

SQRT関数は、Expressionの平方根を戻します。

SQL構文

SQRT(Expression)

パラメータ

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

パラメータ 説明
Expression オペランドまたは列には、任意の数値データ型を指定できます。

説明

  • ExpressionNUMBER型の場合、戻されるデータ型は最大の精度およびスケールを持つNUMBERです。ExpressionBINARY_FLOAT型の場合、戻されるデータ型はBINARY_FLOATです。それ以外の場合、戻されるデータ型はBINARY_DOUBLEです。

  • ExpressionNUMBER型の場合、Expressionの値には負数を指定できません。

  • Expressionがバイナリの浮動小数点数(BINARY_FLOATまたはBINARY_DOUBLE)に解決される場合は、次のようになります。

    • Expressionの値が0以上の場合、結果は正数です。

    • Expressionの値が-0の場合、結果は-0です。

    • Expressionの値が0より小さい場合、結果はNaNです。

SQRT関数を使用して、-10の絶対値の平方根を戻します。次に、その値をBINARY_FLOATにキャストします。

Command> SELECT CAST (SQRT (ABS (-10)) AS BINARY_FLOAT ) FROM dual;
< 3.162278 >
1 row found.

SUBSTR、SUBSTRB、SUBSTR4

ソース文字列のサブストリングを表す文字列を返します。返されたサブストリングは、指定された文字数で、指定された開始点から始まり、文字列の開始または終了のいずれかに関連します。

SQL構文

{SUBSTR | SUBSTRB | SUBSTR4}=(Source, m, n)

パラメータ

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

パラメータ 説明
Source この関数がサブストリングを返す対象の文字列です。値には、CHARVARCHAR2NCHARNVARCHAR2CLOBまたはNCLOBデータ型などのサポートされている文字データ型を指定できます。TimesTenデータ型およびOracle Databaseデータ型の両方がサポートされます。

SourceCHAR文字列の場合、結果はCHARまたはVARCHAR2文字列になります。SourceNCHAR文字列の場合、結果はNVARCHAR2文字列になります。SourceがLOBの場合、結果はLOBデータ型と同じになります。

m サブストリングを開始する位置です。mが正の値の場合、返される文字列の最初の文字は、charで指定される文字列の最初からm文字目になります。mが負の値の場合、文字列の最後からm文字目になります。ABS(m)が文字列の長さを超える場合は、NULL値が返されます。
n サブストリングに含まれる文字数です。nが省略された場合、charで指定した文字列の終わりまでのすべての文字が返されます。nが1より小さいか、charmまたはnNULLの場合、NULLが返されます。

説明

SUBSTRは、文字セットで定義された文字を使用して長さを計算します。SUBSTRBには、文字でなくバイトを使用します。SUBSTR4は、UCS4コードポイントを使用します。

employeesの先頭の5行で、last_nameの最初の3文字を選択します。

SELECT FIRST 5 SUBSTR(last_name,1,3) FROM employees;
< Kin >
< Koc >
< De  >
< Hun >
< Ern >
5 rows found.

employeesの先頭の5行で、last_nameの最後の5文字を選択します。

SELECT FIRST 5 SUBSTR(last_name,-5,5) FROM employees;
< <NULL> >
< chhar >
<  Haan >
< unold >
< Ernst >
5 rows found.

SUM

引数の値の合計を計算します。NULL値は無視されます。SUMは集計関数です。SUMは、集計分析関数にもなります。集計関数の詳細は、「集計関数」を参照してください。分析関数の詳細は、「分析関数」を参照してください。

SQL構文

SUM ([ALL | DISTINCT] Expression) [OVER ([AnalyticClause])]

パラメータ

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

パラメータ 説明
Expression 任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。
ALL 集計関数の引数に重複する行を含めます。ALLまたはDISTINCTのいずれも指定しない場合、ALLとみなされます。
DISTINCT 集計関数の引数から、重複する列の値を削除します。
OVER ([AnalyticClause]) 指定すると、集計分析関数を示します。分析関数の詳細は、「分析関数」を参照してください。

説明

  • GROUP BYが使用されていない空の表でSUM関数を計算すると、SUMNULLを戻します。

  • 空のグループまたはグループ化された空の表(GROUP BYを使用)でSUM関数を計算すると、SUMは何も戻しません。

  • ソースがTT_TINYINTTT_SMALLINTまたはTT_INTEGERの場合、結果のデータ型はTT_BIGINTです。

  • ソースがNUMBERの場合、結果のデータ型は精度とスケールが定義されていないNUMBERになります。

  • その他のすべてのデータ型の場合、結果のデータ型はソースと同じになります。

  • 問合せでAnalyticClauseを使用しない場合、SUMは集計関数として機能します。

  • DISTINCTおよびAnalyticClauseを指定する場合は、QueryPartitionClauseのみを指定できます。OrderByClauseおよびWindowingClauseは指定できません。

すべての従業員の給与を合計します。

Command> SELECT SUM(salary) Total FROM employees;
 
TOTAL
< 691400 >
1 row found.

SYS_CONTEXT

現在のセッションに関する情報を戻します。

戻り値のデータ型はVARCHAR2です。

SQL構文

SYS_CONTEXT('namespace', 'parameter' [, length ])

パラメータ

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

パラメータ 説明
namespace 値: USERENV

他の値の場合には、NULLを戻します。

parameter サポートされる値は、次のとおりです。
  • ACTION

  • AUTHENTICATION_METHOD

  • CLIENT_INFO

  • CURRENT_SCHEMA

  • CURRENT_USER

  • CURRENT_USERID

  • IDENTIFICATION_TYPE

  • LANG

  • LANGUAGE

  • MODULE

  • NLS_SORT

  • SESSION_USER

  • SESSION_USERID

  • SID

length 長さは1から4000までのバイト値です。

parameterに対してサポートされる値の説明は、次のとおりです。

パラメータ 説明
ACTION モジュール内の位置(アプリケーション名)を示し、OCIで設定します。
AUTHENTICATION_METHOD 次のタイプのユーザーに対する認証方法を戻します。
  • パスワードによって認証されるローカル・データベース・ユーザー

  • オペレーティング・システムによって認証される外部ユーザー

CLIENT_INFO OCIを介してアプリケーションによって格納できるユーザー・セッション情報を返します。
CURRENT_SCHEMA 現在アクティブなデータベース・スキーマの名前。この名前は、アクティブな任意の定義者権限オブジェクトの所有者を反映するよう、セッション中に変更される場合があります。ビュー定義の本体で直接使用すると、そのビューを使用しているSQL文の実行時に使用されるデフォルトのスキーマが返されます。SQL文で使用されるビューは、定義者権限を持つとみなされません。

SYS_CONTEXTは、CURRENT_USERパラメータが指定されたときと同じ値がCURRENT_SCHEMAパラメータに指定された場合に返されます。

CURRENT_USER 現在アクティブな権限を持つデータベース・ユーザー名。この名前は、アクティブな任意の定義者権限オブジェクトの所有者を反映するよう、セッション中に変更される場合があります。定義者権限オブジェクトがアクティブでない場合、CURRENT_USERSESSION_USERと同じ値を戻します。ビュー定義の本体で直接使用すると、そのビューを使用しているSQL文を実行しているユーザーが返されます。SQL文で使用されるビューは、定義者権限を持つとみなされません。
CURRENT_USERID 現在アクティブな権限を持つデータベース・ユーザーの識別子。
IDENTIFICATION_TYPE データベースでユーザーが作成された方法を戻します。特に、CREATE/ALTER USER構文に、IDENTIFIED句が反映されます。次のリストに、ユーザーの作成中に使用された構文と戻される識別タイプを示します。
  • IDENTIFIED BY パスワード: LOCAL

  • IDENTIFIED EXTERNALLY: EXTERNAL

LANG 既存の'LANGUAGE'パラメータより短い形式の、言語名のISO略称。
LANGUAGE セッションで現在使用中の言語と地域、およびデータベース文字セット。書式は次のとおりです。

language_territory.characterset

MODULE OCIを介して設定されるアプリケーション名(モジュール)。
NLS_SORT バイナリ・ソートまたは言語ソート。
SESSION_USER ログオン時のデータベース・ユーザー名。この値はセッション中を通して変更されません。
SESSION_USERID ログオン時のデータベース・ユーザーの識別子。
SID 現在の接続の接続ID。

説明

戻り値のデータ型はVARCHAR2です。

SELECT SYS_CONTEXT('USERENV', 'CURRENT_USER') FROM dual;
< TERRY >
1 row found.

SELECT SYS_CONTEXT('USERENV', 'LANGUAGE') FROM dual;
< AMERICAN_AMERICA.AL32UTF8 >
1 row found.

SELECT SYS_CONTEXT('USERENV', 'IDENTIFICATION_TYPE') FROM dual;
< EXTERNAL >
1 row found.

SYSDATEおよびGETDATE

書式YYYY-MM-DD HH:MI:SSで日付を戻します。この日付は、ローカルの現在の日時を表し、文を実行したシステムによって決定されます。

SQL構文

SYSDATE | GETDATE( )

パラメータ

SYSDATEおよびGETDATE関数にはパラメータがありません。

説明

  • SYSDATEおよびGETDATEの機能は同じです。SYSDATEは、Oracle Database構文と互換性があります。GETDATEはMicrosoft SQLサーバー構文と互換性があります。

  • SYSDATEGETDATEに引数はありません。DATE値を戻します。

  • SYSDATEまたはGETDATEの値は、実行時にのみ検索されます。

  • 日付に対する変更(たとえば、異なるタイムゾーンやサマータイムの組込みなど)は、システム・レベルで実行する必要があります。SYSDATEまたはGETDATEを使用して日付を変更することはできません。

  • SYSDATE関数とGETDATE関数はDATEデータ型を戻します。DATEの書式は'YYYY-MM-DD HH:MI:SS'です。

  • SYSDATEGETDATEは組込み関数で、日付式を使用しているところで使用できます。これらは、INSERT...SELECTの選択リスト、WHERE句、挿入値に使用できます。SUMまたはAVG集計(オペランドは数値である必要があります)、COUNT集計(列名が必要です)では使用できません。

  • SYSDATEGETDATEは、単一のSQL文では、同じDATE値を戻します。

  • TT_SYSDATEリテラルおよびORA_SYSDATEリテラルがサポートされています。TT_SYSDATEは、TT_TIMESTAMPデータ型を戻します。ORA_SYSDATEDATEデータ型を戻します。

この例では、SYSDATEを呼び出して、表内のすべての行に対して同じ日付と時刻を戻します。

Command> SELECT SYSDATE FROM dual;
< 2006-09-03 10:33:43 >
1 row found. 

この例では、SYSDATEを呼び出して、現在の日付と時刻を列datecolに挿入します。

Command> CREATE TABLE t (datecol DATE);
Command> INSERT INTO t VALUES (SYSDATE);
1 row inserted.
Command> SELECT * FROM t;
< 2006-09-03 10:35:50 >
1 row found.

この例では、GETDATE表の新しい行それぞれに同じ日付の値を挿入します。ただし、問合せの実行には数秒かかります。

INSERT INTO t1 SELECT GETDATE(), col1 FROM t2 WHERE ...;

TO_CHARSYSDATEともに使用して、表dualから日付を戻します。

Command> SELECT TO_CHAR (SYSDATE) FROM dual;
< 2006-09-03 10:56:35 >
1 row found.

この例では、TT_SYSDATEを呼び出してTT_TIMESTAMPデータ型を戻してから、ORA_SYSDATEを呼び出してDATEデータ型を戻します。

Command> SELECT tt_sysdate FROM dual;
< 2006-10-31 20:02:19.440611 >
1 row found.
Command> SELECT ora_sysdate FROM dual;
< 2006-10-31 20:02:30 >
1 row found.

SYSTEM_USER

オペレーティング・システムによって識別されている現在のデータベース・ユーザーの名前を返します。

SQL構文

SYSTEM_USER

パラメータ

SYSTEM_USERにはパラメータがありません。

オペレーティング・システム・ユーザーの名前を返すには、次の文を使用します。

SELECT SYSTEM_USER FROM dual;

TAN

TAN関数は、Expressionのタンジェント(ラジアンで表された角度)を返します。

SQL構文

TAN(Expression)

パラメータ

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

パラメータ 説明
Expression オペランドまたは列は、任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。

説明

  • ExpressionNUMBER型の場合、戻されるデータ型はNUMBERです。他のすべての数値データ型の場合、戻されるデータ型はBINARY_DOUBLEです。

  • Expressionの値がNULLの場合、NULLが戻されます。

TAN関数を使用して、135度のタンジェントを返します。

Command> SELECT TAN(135 * 3.14159265359/180) "Tangent of 135 degrees" FROM dual;
< -.9999999999996898576939651230133793225994 >
1 row found.

TANH

TANH関数は、Expressionのハイパボリック・タンジェントを返します。

SQL構文

TANH(Expression)

パラメータ

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

パラメータ 説明
Expression オペランドまたは列は、任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。

説明

  • ExpressionNUMBER型の場合、戻されるデータ型はNUMBERです。他のすべての数値データ型の場合、戻されるデータ型はBINARY_DOUBLEです。

  • Expressionの値がNULLの場合、NULLが戻されます。

TANH関数を使用して、.5のハイパボリック・タンジェントを返します。

Command> SELECT TANH(.5) "Hyperbolic tangent of .5" FROM dual;
< .462117157260009758502318483643672548721 >
1 row found.

TIMESTAMPADD

TIMESTAMPADD関数は、指定された時間隔数をタイムスタンプに加算し、変更されたタイムスタンプを戻します。

SQL構文

TIMESTAMPADD (Interval, IntegerExpression, TimestampExpression)

パラメータ

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

パラメータ 説明
Interval 指定された時間隔。リテラルとして表す必要があります。説明セクションに有効な値を示します。
IntegerExpression TT_BIGINTに対して評価する式。
TimestampExpression 日時式。有効なデータ型は、ORA_DATEORA_TIMESTAMPTT_DATEおよびTT_TIMESTAMPです。(別名のDATEおよびTIMESTAMPデータ型も有効です)。TT_TIMEはサポートされていません。

説明

  • Intervalに有効な値は、次のとおりです。

    • SQL_TSI_FRAC_SECOND

    • SQL_TSI_SECOND

    • SQL_TSI_MINUTE

    • SQL_TSI_HOUR

    • SQL_TSI_DAY

    • SQL_TSI_WEEK

    • SQL_TSI_MONTH

    • SQL_TSI_QUARTER

    • SQL_TSI_YEAR

  • SQL_TSI_FRAC_SECONDは、10億分の1秒単位で表されます。

  • 戻り型は、元のデータ型と同じです。たとえば、式がTIMESTAMP型の場合、結果のデータ型はTIMESTAMPになります。正数のタイムスタンプ式(0001-01-01)のみ、問合せと結果の両方で使用できます。TT_DATEおよびTT_TIMESTAMPでは、データ型の開始範囲が1753-01-01であるため、タイムスタンプ式はこの日付と同等かそれ以上である必要があります。

  • IntegerExpressionまたはTimestampExpressionNULLの場合、結果はNULLです。

  • 関数は、IntegerExpressionで求められる時間間隔の合計と時間隔を計算し、指定されたTimestampExpressionに加算します。1年加算するとタイムスタンプは12か月進み、1週間加算するとタイムスタンプは7日進みます。IntegerExpressionが負の場合は、指定された時間隔がTimestampExpressionから減算されます。

  • 指定された時間隔およびタイムスタンプ式を使用することによって、精度が失われる可能性があります。たとえば、時間隔がSQL_TSI_HOURで、IntegerExpressionに2およびTimestampExpressionTT_DATEを指定すると、TimesTenは2時間を0日として扱い、元の日付に0日を加算した合計を戻すため、精度が失われることがあります。ただし、IntegerExpressionが48の場合、TimesTenは48時間を2日として扱い、元の日付に2日加算した合計を戻します。この場合、精度は失われません。

  • タイムスタンプの追加によって指定された構成要素がオーバーフローになる場合(60秒以上、24時間以上、12か月以上など)、オーバーフローは次の構成要素に引き継がれます。たとえば、秒の構成要素がオーバーフローになると、分の構成要素が進められます。

TIMESTAMPADD関数を使用して、タイムスタンプ'2009-11-30 10:00:00'に3か月加算します。TimesTenは、年を増分し、2月の28日に対応するように日付部分を調整します。

Command> SELECT TIMESTAMPADD (SQL_TSI_MONTH, 3, TIMESTAMP '2010-11-30 10:00:00')
         FROM dual;
< 2011-02-28 10:00:00 >
1 row found.

TIMESTAMPADD関数を使用して、タイムスタンプ'2010-12-31 23:59:59'に1秒加算します。TimesTenは、すべてのタイムスタンプの構成要素にオーバーフローを伝播し、適切に構成要素を進めます。

Command> SELECT TIMESTAMPADD (SQL_TSI_SECOND, 1, TIMESTAMP '2010-12-31 23:59:59')
         FROM dual;
< 2011-01-01 00:00:00 >
1 row found.

TIMESTAMPDIFF

TIMESTAMPDIFF関数は、2つのタイムスタンプ間の指定された時間隔の合計を戻します。

SQL構文

TIMESTAMPDIFF (Interval, TimestampExpression1, TimestampExpression2)

パラメータ

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

パラメータ 説明
Interval 指定された時間隔。リテラルとして表す必要があります。説明セクションに有効な値を示します。
TimestampExpression1 日時式。有効なデータ型は、ORA_DATEORA_TIMESTAMPTT_DATEおよびTT_TIMESTAMPです。(別名のDATEおよびTIMESTAMPデータ型も有効です。)TT_TIMEはサポートされていません。
TimestampExpression2 日時式。有効なデータ型は、ORA_DATEORA_TIMESTAMPTT_DATEおよびTT_TIMESTAMPです。(別名のDATEおよびTIMESTAMPデータ型も有効です。)TT_TIMEはサポートされていません。

説明

  • Intervalに有効な値は、次のとおりです。

    • SQL_TSI_FRAC_SECOND

    • SQL_TSI_SECOND

    • SQL_TSI_MINUTE

    • SQL_TSI_HOUR

    • SQL_TSI_DAY

    • SQL_TSI_WEEK

    • SQL_TSI_MONTH

    • SQL_TSI_QUARTER

    • SQL_TSI_YEAR

  • SQL_TSI_FRAC_SECONDは、10億分の1秒単位で表されます。

  • Intervalは、タイムスタンプの差を戻す単位を決定します。たとえば、SQL_TSI_YEARを指定すると、タイムスタンプの差は年数で戻されます。

  • TimesTenは、TimestampExpression2からTimestampExpression1を引いた差を結果として戻します。戻り型は、TT_BIGINTです。

  • 正数のタイムスタンプ式(0001-01-01)のみ使用できます。TT_DATEおよびTT_TIMESTAMPでは、データ型の開始範囲が1753-01-01であるため、タイムスタンプ式はこの日付と同等かそれ以上である必要があります。

  • TimestampExpression1またはTimestampExpression2NULLの場合、結果はNULLです。

  • いずれかのタイムスタンプ式が日付値で、Intervalで小数秒、秒、分または時間が指定されると、TimesTenでタイムスタンプの差が計算される前に、タイムスタンプの時間部分が0(ゼロ)に設定されます。

  • 関数は、まず、より上位の時間隔型を指定された時間隔型に変換することによって、指定されたIntervalの単位で各タイムスタンプを表します。たとえば、指定された時間隔が月数の場合、年数が月数に変換されます。つまり、1年は12か月、1週間は7日などです。2つのタイムスタンプ間の日数を検出するために、正確な日数が計算されます。月数は日数によって変わるため、TimesTenでは1か月の日数は想定されていません。

  • 関数は、時間隔の小数部分が時間隔の境界をまたぐときに、指定された時間隔を増分します。たとえば、2009-12-31と2010-01-01の間の年の差は、年の小数部が翌年にまたがるため(2009年から2010年)、1年となります。ただし、2010-01-01と2010-12-31の差は、時間隔の小数部分が境界をまたがないため0年です。2010年内になります。

  • 関数は、週の差を計算する場合は、最初に日数で差を計算してから、その結果を丸める前に7で除算します。TimesTenでは、1週間は日曜日から始まると想定されています。そのため、2010-10-21(木曜日)と2010-10-25(次の月曜日)の週の差は1週間になります。週の開始を火曜日とすると、同じ日付間の差は0週間になります。

TIMESTAMPDIFF関数を使用して、2008-02-01と2008-03-01の日付間の差を日数で計算します。2008年はうるう年のため、結果は29日になります。1か月を30日と想定しなくても、正確に計算されます。

Command> SELECT TIMESTAMPDIFF (SQL_TSI_DAY, DATE '2008-02-01',
                               DATE '2008-03-01') 
         FROM dual;
< 29 >
1 row found.

TIMESTAMPDIFF関数を使用して、2009-02-01と2009-03-01の日付間の差を月数で計算します。月の時間隔の境界をまたぐため、関数は1を戻します。2つ目の例では、時間隔に日数が指定されているため、結果は28になります。

Command> SELECT TIMESTAMPDIFF (SQL_TSI_MONTH, DATE '2009-02-01',
                               DATE '2009-03-01')
         FROM dual;
< 1 >
1 row found.

Command> SELECT TIMESTAMPDIFF (SQL_TSI_DAY, DATE '2009-02-01',
                               DATE '2009-03-01')
         FROM dual;
< 28 >
1 row found.

TIMESTAMPDIFF関数を使用して、2009-02-01と2009-02-29の日付間の差を月数で計算します。月の時間隔の境界をまたがないため、関数は0(ゼロ)を戻します。

Command> SELECT TIMESTAMPDIFF (SQL_TSI_MONTH, DATE '2009-02-01',
           DATE '2009-02-28') FROM dual;
< 0 >
1 row found.

TIMESTAMPDIFF関数を使用して、型が混在した期間の時間差を小数秒で示します。1時間の時間差は、ナノ秒(小数秒の単位)で戻されます。データ型の時間部分は00:00:00に設定されます。

Command> SELECT TIMESTAMPDIFF (SQL_TSI_FRAC_SECOND,
                               TT_TIMESTAMP '2009-12-31 01:00:00.00', 
                               DATE '2009-12-31') 
         FROM dual;
< -3600000000000 >
1 row found.

TO_BLOB

TO_BLOB関数は、VARBINARYまたはBINARYBLOBに変換します。

この関数は、TimesTen Scaleoutではサポートされていません。

SQL構文

TO_BLOB ( ValidDataType )

パラメータ

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

パラメータ 説明
ValidDataType 値は、VARBINARYまたはBINARYデータ型になります。

次の例では、BINARY列およびVARBINARY列を持つ表を作成します。TO_BLOB関数は、BINARYおよびVARBINARYデータをBLOBに変換するためにこれらの列の値で使用されます。

Command> CREATE TABLE bvar(col1 BINARY (10), col2 VARBINARY (10));

Command> INSERT INTO bvar (col1, col2) VALUES (0x4D7953514C, 0x39274D);
1 row inserted.

Command> SELECT * FROM bvar;
 < 4D7953514C0000000000, 39274D >
1 row found.

Command> SELECT TO_BLOB(col1), TO_BLOB(col2) FROM bvar;
< 4D7953514C0000000000, 39274D >
1 row found.

TO_CHAR

TO_CHAR関数は、DATETIMESTAMPまたは数値の入力値をVARCHAR2に変換します。

SQL構文

TO_CHAR ( Expression1[, Expression2 [, Expression3]])

パラメータ

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

パラメータ 説明
Expression1 DATETIMESTAMPCLOBNCLOBまたは数式。
Expression2 書式文字列。省略された場合、TimesTenではデフォルトの日付書式(YYYY-MM-DD)が使用されます。
Expression3 現在は無視されているNLSパラメータを指定するための、CHARまたはVARCHAR2式。

説明

  • TO_CHARでは、式に指定されたデータ型に応じて異なる日時書式モデルがサポートされています。DATEまたはTIMESTAMPデータ型のTO_CHARに使用される日時書式モデルの詳細は、「日時書式モデル」を参照してください。TT_DATEまたはTT_TIMESTAMPデータ型のTO_CHARに使用される日時書式モデルの詳細は、「ROUNDおよびTRUNC日付関数の書式モデル」を参照してください。

  • TO_CHARでは、式に指定された数値データ型に応じて異なる数値書式モデルがサポートされています。NUMBERまたはORA_FLOATデータ型のTO_CHARに使用される数値書式モデルの詳細は、「数値書式モデル」を参照してください。その他のすべての数値データ型のTO_CHARに使用される数値書式モデルの詳細は、「ROUNDおよびTRUNC日付関数の書式モデル」を参照してください。

SELECT FIRST 5 first_name, 
               TO_CHAR (hire_date, 'MONTH DD, YYYY'),
               TO_CHAR (salary, '$999999.99')
  FROM employees;
< Steven, JUNE      17, 1987,   $24000.00 >
< Neena, SEPTEMBER 21, 1989,   $17000.00 >
< Lex, JANUARY   13, 1993,   $17000.00 >
< Alexander, JANUARY   03, 1990,    $9000.00 >
< Bruce, MAY       21, 1991,    $6000.00 >
5 rows found.

SELECT TO_CHAR(-0.12,'$B99.9999') FROM dual;
<   -$.1200 >
1 row found.

SELECT TO_CHAR(-12, 'B99999PR') FROM dual;
<     12  >
1 row found.

SELECT TO_CHAR(-12,'FM99999') FROM dual;
< -12 >
1 row found.

SELECT TO_CHAR(1234.1,'9,999.999') FROM dual;
<  1,234.100 >
1 row found.

TO_CLOB

TO_CLOB関数は、次の値のいずれかをCLOBに変換します。

  • CHARVARCHAR2NVARCHAR2TT_VARCHARTT_NVARCHARまたはNCLOBデータ型のいずれかに含まれる文字値

  • DATEまたはTIMESTAMPデータ型に含まれる日時値

  • NUMBERBINARY_FLOATまたはBINARY_DOUBLEデータ型に含まれる数値

この関数は、TimesTen Scaleoutではサポートされていません。

SQL構文

TO_CLOB ( ValidDataType )

パラメータ

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

パラメータ 説明
ValidDataType 前述の有効なデータ型のいずれかの値。

説明

TO_CLOB関数は、INTERVALまたはTIMESTAMP with TIMEZONEデータ型に含まれる値では動作しません。

次の例では、TO_CLOB関数を使用して文字列を変換します。

Command> DESCRIBE clob_content;
 
Table USER1.CLOB_CONTENT:
  Columns:
   *ID                              NUMBER (38) NOT NULL
    CLOB_COLUMN                     CLOB NOT NULL
 
1 table found.
(primary key columns are indicated with *)

Command> INSERT INTO clob_content (id, clob_column) VALUES (3, EMPTY_CLOB());
1 row inserted.

Command> UPDATE clob_content 
         SET clob_column = TO_CLOB('Demonstration of the TO_CLOB function.') 
         WHERE id = 3;
1 row updated.

TO_DATE

TO_DATE関数は、CHARVARCHAR2CLOBまたはNCLOB引数をDATEデータ型の値に変換します。

SQL構文

TO_DATE (Expression1[, Expression2 [, Expression3]])

パラメータ

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

パラメータ 説明
Expression1 CHARVARCHAR2CLOBまたはNCLOB式。
Expression2 書式文字列。この式は、通常は必須です。オプションになるのは、Expression1がデフォルトの日付書式YYYY-MM-DD HHMISSである場合のみです。
Expression3 現在は無視されているNLSパラメータを指定するための、CHARまたはVARCHAR2式。

説明

TO_DATE関数では、日時書式モデルを使用できます。詳細は、日時書式モデルを参照してください。

Command> SELECT TO_DATE ('1999, JAN 14', 'YYYY, MON DD') FROM dual;
< 1999-01-14 00:00:00 >
1 row found.

Command> SELECT TO_CHAR(TO_DATE('1999-12:23','YYYY-MM:DD')) FROM dual;
< 1999-12-23 00:00:00 >
1 row found.

Command> SELECT TO_CHAR(TO_DATE('12-23-1997 10 AM:56:20', 
                                'MM-DD-YYYY HH AM:MI:SS'), 
                                'MONTH DD, YYYY HH:MI-SS AM')
         FROM dual;
< DECEMBER  23, 1997 10:56-20 AM >
1 row found.

Command> SELECT TO_CHAR(TO_DATE('12-23-1997 15:56:20', 
                                'MM-DD-YYYY HH24:MI:SS'), 
                                'MONTH DD, YYYY HH24:MI-SS')
         FROM dual;
< DECEMBER  23, 1997 15:56-20 >
1 row found.

TO_TIMESTAMP

TO_TIMESTAMP関数は、CHARVARCHAR2CLOBまたはNCLOB引数をTIMESTAMPデータ型の値に変換します。

SQL構文

TO_TIMESTAMP (Expression1[, Expression2 [, Expression3]])

パラメータ

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

パラメータ 説明
Expression1 CHARVARCHAR2CLOBまたはNCLOB式。
Expression2 Expression1の書式を指定する書式文字列。書式文字列(Expression2)を省略する場合は、TIMESTAMPデータ型のデフォルトの書式のExpression1を指定する必要があります。TIMESTAMPデータ型のデフォルトの書式はSYYYY-MM-DD HH24:MI:SS:FF[9]です。
Expression3 NLSパラメータを指定するCHARまたはVARCHAR2式。この値は現在無視されています。

説明

  • TO_TIMESTAMP関数は、CHARVARCHAR2CLOBまたはNCLOB式(Expression1として関数に渡された)をTIMESTAMPデータ型の値に変換します。戻りデータ型は、TIMESTAMPです。

  • 有効な日時書式要素を、Expression2の書式文字列に使用できます。詳細は、日時書式モデルを参照してください。

例1: この例は、TO_TIMESTAMP関数の戻りデータ型を示しています。この最大小数秒精度は9です。

Command> describe SELECT TO_TIMESTAMP ('2020-05-07 10:11:12.123456') FROM dual;
 
Prepared Statement:
  Columns:
    EXP                             TIMESTAMP (9) NOT NULL

2: この例では、文字列をTIMESTAMPデータ型に変換する場合にエラーがスローされます。Expression1TIMESTAMPデータ型の小数秒精度6を示しますが、書式文字列(Expression2)は2の値(FF2)を示します。値を切り捨てることができず、変換エラーが発生します。

Command> SELECT TO_TIMESTAMP('2020-01-01 10:11:12.123456',
           'YYYY-MM-DD HH:MI:SS.FF2') FROM dual;
 2813: Error converting from character string '2020-01-01 10:11:12.123456' 
       to timestamp
The command failed.

例3: これらの例は、FF[n]nの値がExpression1の小数秒(この例では123456)を格納するのに十分な大きさで、切り捨てられないようにする必要があることを示しています。2番目の例のようにnの値を指定しない場合、デフォルトは9になります。

Command> SELECT TO_TIMESTAMP ('2020-05-07 10:10:10.123456',
         'YYYY-MM-DD HH:MI:SS.FF6') FROM dual;
< 2020-05-07 10:10:10.123456 >
1 row found.

Command> select to_timestamp('2020-05-07 10:10:10.123456',
         'YYYY-MM-DD HH:MI:SS.FF') FROM dual;
< 2020-05-07 10:10:10.123456000 >
1 row found.

例4: 次の例は、Expression1が文字列で、書式文字列が指定されている場合の結果を示しています。

Command> SELECT TO_TIMESTAMP ('2020-05-07 10:10:10.123456',
         'YYYY-MM-DD HH:MI:SS.FF6') FROM dual;
< 2020-05-07 10:10:10.123456 >
1 row found.

Command> SELECT TO_TIMESTAMP ('2020-05-07 23:00:00.123456',
         'YYYY-MM-DD HH24:MI:SS.FF6') FROM dual;
< 2020-05-07 23:00:00.123456 >
1 row found.

5: この例では、FF書式文字列を使用しています。FFの書式では、結果に表示されているように最大精度の9が使用されます。

Command> SELECT TO_TIMESTAMP ('10-Sep-02 10:10:10.123000',
         'DD-Mon-RR HH12:MI:SS.FF') FROM dual;
< 2002-09-10 10:10:10.123000000 >
1 row found.

例6: 次の例は、書式文字列がない場合の結果を示しています。デフォルト書式はExpression1に使用されます。Expression1の小数秒精度(この例では123456789)はオプションです。

Command> SELECT TO_TIMESTAMP ('2020-MAY-07 101010.123456789') FROM dual;
< 2020-05-07 10:10:10.123456789 >
1 row found.

Command> SELECT TO_TIMESTAMP ('2020-MAY-07 101010') FROM dual;
< 2020-05-07 10:10:10.000000000 >
1 row found.

Command> SELECT TO_TIMESTAMP ('2020-MAY-07 101010.12') FROM dual;
< 2020-05-07 10:10:10.120000000 >
1 row found.

7: この例は、TO_TIMESTAMPTO_CHAR関数を使用して、TIMESTAMPデータ型を明示的なタイムスタンプ書式で返す方法を示しています。

Command> SELECT TO_CHAR(TO_TIMESTAMP ('2020-05-07 13:11:12.123456',
         'YYYY-MM-DD HH24:MI:SS.FF6'),'DD/MON/YYYY HH24:MI:SS.FF6 PM') FROM dual;
< 07/MAY/2020 13:11:12.123456 PM >
1 row found.

8: この例では、TIMESTAMP(9)型の列を持つ表を作成します。表を記述した後、例では、TO_TIMESTAMP関数を使用せずに1行挿入してから、TO_TIMESTAMP関数を使用して2行目を挿入します。表に対するSELECTが、2つの挿入操作の結果を示しています。

Command> CREATE TABLE ts_table(col1 TIMESTAMP(9));
Command> describe ts_table;
 
Table SAMPLEUSER.TS_TABLE:
  Columns:
    COL1                            TIMESTAMP (9)
 
1 table found.
(primary key columns are indicated with *)

Command> INSERT INTO ts_table VALUES('2020-05-04 11:12:13.999999');
1 row inserted.
Command> INSERT INTO ts_table VALUES(to_timestamp('04-05-2020 11:12:13.123456789',
         'DD-MM-YYYY HH:MI:SS.FF9'));
1 row inserted.

Command> SELECT * FROM ts_table;
< 2020-05-04 11:12:13.999999000 >
< 2020-05-04 11:12:13.123456789 >
2 rows found.

9: 次の例では、AMおよびPM書式文字列の使用を説明しています。

Command> SELECT TO_TIMESTAMP ('10-Sep-02 10:10:10.123456 PM',
         'DD-Mon-RR HH12:MI:SS.FF6 PM') FROM dual;
< 2002-09-10 22:10:10.123456 >
1 row found.

Command> SELECT TO_CHAR(TO_TIMESTAMP ('10-Sep-02 10:10:10.123456 PM', 
         'DD-Mon-RR HH12:MI:SS.FF6 PM'),'DD-Mon-RR HH12:MI:SS.FF6 PM') 
         FROM dual;
< 10-Sep-02 10:10:10.123456 PM >
1 row found.

次の例では、TIMESTAMP(9)データ型を持つcol2を定義して、ts_table2表を作成します。表を記述した後、挿入操作を実行し、AMおよびPMを使用してTIMESTAMP列にデータを挿入する方法を説明しています。

Command> CREATE TABLE ts_table2 (col1 number primary key, col2 timestamp(9));
Command> describe ts_table2;

Table SAMPLEUSER.TS_TABLE2:
  Columns:
   *COL1                            NUMBER NOT NULL
    COL2                            TIMESTAMP (9)

1 table found.
(primary key columns are indicated with *)

Command> INSERT INTO ts_table2 VALUES (100,
         TO_TIMESTAMP('10-FEB-20 12.46.48.802050 PM',
         'DD-MON-RR HH:MI:SS.FF AM'));
1 row inserted.

Command> SELECT TO_CHAR(col2) FROM ts_table2;
< 2020-02-10 12:46:48.802050000 >
1 row found.

Command> SELECT TO_CHAR (col2, 'DD-MON-RR HH:MI:SS.FF AM') from ts_table2;
< 10-FEB-20 12:46:48.802050000 PM >
1 row found.

TO_LOB

TO_LOB関数は、CLOBおよびVARBINARYデータ型に指定されたTT_VARCHARおよびVARCHAR2データ型をBLOBに変換します。

この関数は、TimesTen Scaleoutではサポートされていません。

SQL構文

TO_LOB ( ValidDataType )

パラメータ

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

パラメータ 説明
ValidDataType 値は、TT_VARCHARVARCHAR2またはBINARYデータ型になります。

説明

この関数は、TT_VARCHARVARCHAR2またはVARBINARY列でのみ、およびLOB列が定義されている表でCREATE TABLE AS SELECTまたはINSERT...SELECT文を使用する場合にのみ使用できます。

次の例では、LOB列を持つ表のINSERT...SELECT文内でTO_LOB関数を使用する方法を示します。

Command> CREATE TABLE clb(c CLOB);
Command> CREATE TABLE vc (v VARCHAR2(2000));
Command> INSERT INTO vc(v) 
         VALUES ('Showing the functionality of the TO_LOB function');
1 row inserted.

Command> INSERT INTO clb 
         SELECT TO_LOB(v) FROM vc; 
1 row inserted.

Command> SELECT * FROM clb;
< Showing the functionality of the TO_LOB function >
1 row found.

前述の制限のため、TO_CLOBまたはTO_BLOB関数を使用できるすべての場合にTO_LOB関数を使用できるわけではありません。次の例では、この方法でTO_LOB関数の使用を試みた場合に受け取るエラーを示します。

Command> SELECT TO_LOB(col1) FROM bvar;
 2610: Operand data type 'BINARY' invalid for operator 
 'TO_LOB' in expr ( TO_LOB( BVAR.COL1 ))
The command failed. 

TO_NCLOB

TO_NCLOB関数は、次の値のいずれかをNCLOBに変換します。

  • CHARVARCHAR2NVARCHAR2TT_VARCHARTT_NVARCHARまたはNCLOBデータ型のいずれかに含まれる文字値

  • DATEまたはTIMESTAMPデータ型に含まれる日時値

  • NUMBERBINARY_FLOATまたはBINARY_DOUBLEデータ型に含まれる数値

この関数は、TimesTen Scaleoutではサポートされていません。

SQL構文

TO_NCLOB ( ValidDataType )

パラメータ

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

パラメータ 説明
ValidDataType 前述の有効なデータ型のいずれかの値。

次の例では、VARCHAR2 job_title列のデータをNCLOBデータ型に変換します。

Command> SELECT TO_NCLOB(job_title) FROM jobs;

< Public Accountant >
< Accounting Manager >
< Administration Assistant >
< President >
< Administration Vice President >
< Accountant >
< Finance Manager >
< Human Resources Representative >
< Programmer >
< Marketing Manager >
< Marketing Representative >
< Public Relations Representative >
< Purchasing Clerk >
< Purchasing Manager >
< Sales Manager >
< Sales Representative >
< Shipping Clerk >
< Stock Clerk >
< Stock Manager >
19 rows found.

TO_NUMBER

式をNUMBER型の値に変換します。

SQL構文

TO_NUMBER (Expression[, Format]) 

パラメータ

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

パラメータ 説明
Expression 変換する式で、値はCHARVARCHAR2NCHARNVARCHAR2BINARY_FLOATBINARY_DOUBLECLOBまたはNCLOB型になります。
Format 指定した書式が、ExpressionNUMBER型の値に変換する場合に使用されます。書式文字列は数値書式モデルを示します。書式には定数またはパラメータを使用できます。

説明

TO_NUMBER関数では、数値書式モデルを使用できます。数値書式モデルの詳細は、「数値書式モデル」を参照してください。

Command> SELECT TO_NUMBER ('100.00', '999D99') FROM dual;
< 100 >
1 row found.

Command> SELECT TO_NUMBER ('1210.73', '9999.99') FROM dual;
< 1210.73 >
1 row found.

TRIM

TRIM関数は、文字列から先行文字または後続文字(あるいはその両方)を削除します。

SQL構文

TRIMには、次の4つの構文オプションがあります。

  • Trim_characterと組み合せてTRIM修飾子の1つ(LEADINGTRAILINGまたはBOTH)を指定します。

    TRIM ( LEADING|TRAILING|BOTH Trim_character FROM Expression )
    
  • Trim_characterなしでTRIM修飾子の1つ(LEADINGTRAILINGまたはBOTH)を指定します。この場合、Trim_characterはデフォルトで空白になります。

    TRIM ( LEADING|TRAILING|BOTH FROM Expression )
    
  • TRIM修飾子なしでTrim_characterを指定すると、Trim_characterの先行文字と後続文字の両方がExpressionから削除されます。

    TRIM (Trim_character FROM Expression )
    
  • 修飾子またはTrim_characterなしでExpressionを指定すると、Expressionから先行および後続の空白文字が削除されます。

    TRIM ( Expression )
    

パラメータ

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

パラメータ 説明
LEADING | TRAILING | BOTH LEADINGTRAILINGまたはBOTHは、TRIM関数の修飾子です。LEADINGは、ExpressionからTrim_characterのすべての先行文字を削除します。TRAILINGは、ExpressionからTrim_characterのすべての後続文字を削除します。BOTHは、ExpressionからTrim_characterの先行文字と後続文字を削除します。
[Trim_character] 指定する場合、Trim_characterExpressionから切り捨てるCHARVARCHAR2NCHARNVARCHAR2CLOBNCLOBオペランドまたは列を表します。1つの文字のみを指定できます。Trim_characterを指定しない場合、デフォルトで単一の空白文字に設定されます。Trim_characterが文字リテラルの場合、一重引用符でその文字を囲みます。
Expression Expressionは、切り捨てる対象とするCHARVARCHAR2NCHARNVARCHAR2CLOBNCLOBオペランドまたは列です。Expressionが文字リテラルの場合、一重引用符でその文字を囲みます。

説明

  • ExpressionCHARまたはVARCHAR2型の場合、戻されるデータ型はVARCHAR2です。ExpressionNCHARまたはNVARCHAR2型の場合、戻されるデータ型はNVARCHAR2です。ExpressionCLOB型の場合、戻されるデータ型はCLOBです。ExpressionNCLOB型の場合、戻されるデータ型はNCLOBです。戻されるデータ型の長さは、Expressionのデータ型の長さに等しくなります。

  • ExpressionCHAR長セマンティクスで定義されたデータ型の場合、戻される長さはCHAR長セマンティクスで表現されます。

  • Trim_characterまたはExpressionのいずれかがNULLの場合、結果はNULLです。

  • Trim_characterExpressionには、TT_CHARTT_VARCHARTT_NCHARおよびTT_NVARCHARを指定できます。ExpressionTT_CHARまたはTT_VARCHAR型の場合、戻されるデータ型はTT_VARCHARです。ExpressionTT_NCHARまたはTT_NVARCHAR型の場合、戻されるデータ型はTT_NVARCHARです。

  • Trim_characterNCHARまたはNVARCHAR2型で、ExpressionCHARまたはVARCHAR2型の場合、Trim_characterTRIMの実行前にCHARまたはVARCHAR2に変換されます。Trim_characterの変換は失われる可能性があります。Trim_characterがデータベースの文字セットに含まれない場合、問合せにより予期しない結果が発生する可能性があります。

  • CHARVARCHAR2NCHARNVARCHAR2CLOBおよびNCLOB型の場合:

    • Expressionのすべての文字がTRIM関数により削除された場合、結果はNULLになります。

  • TT_CHARTT_VARCHARTT_NCHARおよびTT_NVARCHAR型の場合:

    • Expressionのすべての文字がTRIM関数により削除された場合、結果は空の文字列になります。

TRIM関数を修飾子とともに使用し、Expression'0000TRIM Example0000'からTrim_character'0'(ゼロ)を削除します。

Command> SELECT TRIM (LEADING '0' FROM '0000TRIM Example0000') FROM dual;
< TRIM Example0000 >
1 row found.
Command> SELECT TRIM (TRAILING '0' FROM '0000TRIM Example0000') FROM dual;
< 0000TRIM Example >
1 row found.
Command> SELECT TRIM (BOTH '0' FROM '0000TRIM Example0000') FROM dual;
< TRIM Example >
1 row found.

TRIM関数を修飾子とともに使用し、空白文字を削除します。Trim_characterは指定しません。Trim_characterのデフォルト値は、空白文字です。

Command> SELECT TRIM (LEADING FROM '    TRIM Example    ') FROM dual;
< TRIM Example     >
1 row found.
Command> SELECT TRIM (TRAILING FROM '    TRIM Example    ') FROM dual;
<     TRIM Example >
1 row found.
Command> SELECT TRIM (BOTH FROM '    TRIM Example    ') FROM dual;
< TRIM Example >
1 row found.

TRIM関数をTrim_character'0'(ゼロ)とともに使用します。修飾子は指定しません。Expression'0000TRIM Example0000'から、先行および後続の'0'(ゼロ)が削除されます。

Command> SELECT TRIM ('0' FROM '0000TRIM Example0000') FROM dual;
< TRIM Example >
1 row found.

TRIM関数を修飾子またはTrim_characterなしで使用します。先行および後続の空白文字が削除されます。

< TRIM Example >
1 row found.
Command> SELECT TRIM ('    TRIM Example    ') FROM dual;

TRUNC (日付)

書式モデルfmtで指定された単位に時刻部分が切り捨てられた日付を戻します。戻される値の型はDATEです。fmtを指定しない場合、dateは最も近い日に切り捨てられます。

SQL構文

TRUNC (date [,fmt]) 

パラメータ

TRUNC(日付)には、次のパラメータがあります。

パラメータ 説明
date 切り捨てられる日付。dateにはDATEデータ型を指定します。この関数は、書式モデルで指定された単位に時刻部分が切り捨てられたDATEデータ型を戻します。fmtを指定しない場合、日付は最も近い日に切り捨てられます。DATEデータ型を指定しない場合は、エラーが戻されます。
[,fmt] 書式モデルの切捨て単位。fmtには、定数またはパラメータのいずれかを指定します。

説明

fmtでの使用が許可される書式モデルの詳細は、「ROUNDおよびTRUNC日付関数の書式モデル」を参照してください。

Command> SELECT TRUNC (TO_DATE ('27-OCT-92','DD-MON-YY'),'YEAR') FROM dual;
< 2092-01-01 00:00:00 >
1 row found.

TRUNC (式)

一定の小数位の桁数に切り捨てられた数値を戻します。

SQL構文

TRUNC (Expression [,m]) 

パラメータ

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

パラメータ 説明
Expression 切り捨てる。オペランドの型はNUMBERである必要があります。オペランドの型がNUMBERでない場合、エラーが戻されます。戻される値の型はNUMBERです。
[,m] 切り捨てられた後の小数位の桁数。mを省略すると、数値は0位に切り捨てられます。mの値を負にすると、小数点の左側m桁を切り捨てる(ゼロにする)ことができます。

SELECT TRUNC (15.79,1) FROM dual;
< 15.7 >
1 row found.

SELECT TRUNC (15.79,-1) FROM dual;
< 10 >
1 row found.

TT_HASH

TT_HASH関数は、式(または式のリスト)のハッシュ値を戻します。この値は、ハッシュ索引で使用される値です。

SQL構文

TT_HASH(Expression [,...])

パラメータ

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

パラメータ 説明
Expression [,...] 式(または式のリスト)のハッシュ値を決定するために使用される1つ以上の式。

説明

  • 各式は、既知のデータ型を使用し、NULL値不可である必要があります。式のハッシュ値は、式の値と型の両方に依存します。たとえば、TT_INTEGERで値が25のTT_HASHは、NUMBERまたはBINARY_DOUBLEで値が25のTT_HASHとは異なる場合があります。式のリストを指定する場合は、TT_HASHの結果はリスト内の式の順序によって異なります。

  • 単純列参照でない定数および式は、アプリケーションで制御できない内部入力ルールの影響を受けるため、単純列参照でない式に適した値をTT_HASHで計算する場合の最適な方法は、CASTを使用して式を適切な型にキャストする方法です。

  • TT_HASHの結果のデータ型は、32ビット・モードではTT_INTEGER、64ビット・モードではTT_BIGINTです。

  • TT_HASHは、SQL文内の式を使用できるすべての場所で使用できます。たとえば、TT_HASHでは、SELECTリスト、WHEREまたはHAVING句、ORDER BY句、GROUP BY句で使用できます。

  • エラー・メッセージ、トレース・メッセージおよびttXactAdminの出力ではハッシュ値が符号付き10進数として表示されるため、値がTT_HASH出力と一致します。

次の問合せは、指定されたハッシュ値に主キー列がハッシュされる行のセットを検索します。

SELECT * FROM t1 
  WHERE TT_HASH(pkey_col1, pkey_col2, pkey_col3) = 12345678; 

UID

この関数は、セッション・ユーザーを一意に識別する整数(TT_INTEGER)を戻します。

SQL構文

UID

パラメータ

UIDにはパラメータがありません。

SELECT UID FROM dual;
< 10 >
1 row found.

UNISTR

UNISTRは、NVARCHAR2型のデータに解決される文字列を引数として取り、UTF-16書式の値を戻します。Unicodeエスケープがサポートされています。文字列に文字のUnicodeエンコード値を指定できます。

SQL構文

UNISTR ('String')

パラメータ

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

パラメータ 説明
'String' UNISTR関数に渡される文字列。文字列はNVARCHAR2型に解決されます。TimesTenでは、値はUTF-16書式で戻されます。文字列の一部としてUnicodeエスケープを指定できます。

次の例は、UNISTR関数を呼び出し、引数として文字列'A\00E4a'を渡します。戻される値は、UTF-16書式の文字列の値です。

Command> SELECT UNISTR ('A\00E4a') FROM dual;
<Aäa> 1 row found.

USER

データベースに現在接続しているTimesTenユーザーの名前を返します。

SQL構文

USER

パラメータ

USERにはパラメータがありません。

データベースに現在接続しているユーザーの名前を返すには、次の文を使用します。

SELECT USER FROM dual;

VSIZE

VSIZE関数は、式の内部表現でのバイト数を返します。

SQL構文

VSIZE(Expression)

パラメータ

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

パラメータ 説明
Expression VSIZE関数に渡される式。関数は、式の内部表現でのバイト数を返します。

説明

  • 式の値がNULLの場合は、NULLが返されます。それ以外の場合、返されるデータ型はNUMBERです。

  • VSIZE関数は、LOBデータを直接サポートしません。ただし、LOBを暗黙的なデータ変換を介して引数として渡すことはできます。

部門10の従業員のlast_name列のバイト数を返すには、VSIZE関数を使用します。

Command> SELECT last_name, VSIZE (last_name) "BYTES" FROM employees
         WHERE department_id = 10 ORDER BY employee_id;
< Whalen, 6 >
1 row found.

この例では、CLOBデータ型で定義された列にVSIZE関数を使用する方法を示しています。この例では、最初に、VARCHAR2(200)データ型で定義されたcol1列を持つvsize_varchar2表を作成します。次に、CLOBデータ型で定義されたcol1列を持つvsize_clob表を作成します。同じ文字列が各表のcol1に挿入されます。次に、VSIZE関数を使用して、col1のデータの内部表現でのバイト数を返します。vsize_clob表に対してCAST関数を使用して、CLOBデータ型をVARCHAR2(200)データ型col1列にキャストします。前述のように、VSIZE関数は、vsize_varchar2表に対する問合せに対してvsize_clob表に対する場合と同じ同じ結果を返します。

Command> CREATE TABLE vsize_varchar2 (col1 VARCHAR2 (200));
Command> CREATE TABLE vsize_clob (col1 CLOB);
Command> INSERT INTO vsize_varchar2 VALUES ('This is a test to illustrate how to 
            use the VSIZE function on a column defined with the CLOB 
            data type');
1 row inserted.
Command> INSERT INTO vsize_clob VALUES ('This is a test to illustrate how to 
            use the VSIZE function on a column defined with the CLOB 
            data type');
1 row inserted.
Command> SELECT VSIZE (col1) FROM vsize_varchar2;
< 102 >
1 row found.
Command> SELECT VSIZE (CAST (col1 AS VARCHAR2 (200))) FROM vsize_clob;
< 102 >
1 row found.

この例は、LENGTH関数とVSIZE関数の違いを示しています。LENGTH関数は、SYSDATEの長さを返します。VSIZE関数は、SYSDATEの内部表現でのバイト数を返します。

Command> SELECT SYSDATE FROM dual;
< 2020-03-07 10:47:40 >
1 row found.
Command> SELECT LENGTH (SYSDATE) FROM dual;
< 19 >
1 row found.
Command> SELECT VSIZE (SYSDATE) FROM dual;
< 7 >
1 row found.