4 関数
関数は、データを操作し、結果を戻します。この章には、すべての関数のアルファベット順のリストに加え、次の関数の概要も含まれています。
文字列関数
TimesTenでは、次の文字列関数がSELECT文でサポートされています。
文字列関数を指定する選択済の値によって、SELECTがマテリアライズされます。これによって時間と領域の両方においてオーバーヘッドが発生します。
LOB関数
LOB関数は、TimesTen Scaleoutではサポートされていません。
次のEMPTY_*関数は、LOBをNULL以外の値に初期化します。
次のTO_*関数は、特定のデータ型を任意のLOBデータ型に変換します。
集計関数
集計関数は、グループ内のすべての行で特定の操作を実行します。集計ファンクションは、単一行ではなく行のグループに基づいて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_ID、GROUPINGおよびGROUPING_ID関数を使用します。
次の項目の詳細は、「データ型」を参照してください。
-
集計関数の評価において実行される切捨てとデータ型の変換。
-
数値引数を含む集計関数の精度とスケール。
-
集計関数の結果のデータ型の制御。
集計関数のリストは、次のとおりです。
分析関数
分析関数は行のグループに基づいて集計値を計算します。集計関数との違いは、グループごとに複数の行を戻す点です。この行のグループはウィンドウと呼ばれ、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 }
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
分析関数の名前。 |
|
|
分析関数の引数。引数の数は分析関数によって異なります。関数に対する引数の詳細は、特定の関数を参照してください。 |
|
|
関数が分析関数であることを示します。この句は、
|
|
|
同じまたは異なる
|
|
|
各キーが 分析関数は、この句で指定された順序で動作します。ただし、この句は、結果の順序は保証しません。最終結果の順序を保証するには、問合せの
|
|
|
順序付けシーケンス(昇順または降順)を指定します。デフォルトは 句はオプションです。 |
|
|
句はオプションです。 |
|
|
句は、
分析関数が戻す値は、順序付けシーケンスの結果が一意の順序でなければ非決定的な結果を生成することがあります。この場合、
|
|
|
|
|
|
有効な値は、
|
|
|
有効な値は、
|
|
|
終了点として使用することはできません。 |
|
|
開始点として使用することはできません。 |
|
|
|
|
|
終了点の
|
ABS
ABS関数は、Expressionの絶対値を戻します。
SQL構文
ABS(Expression)パラメータ
ABSには、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
オペランドまたは列には、任意の数値データ型を指定できます。 |
説明
-
ExpressionがNUMBER型の場合、戻されるデータ型は最大の精度およびスケールを持つ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は、-1から1の範囲内である必要があります。ACOSは、0からpiまでの範囲の値をラジアンで表して返します。 -
ExpressionがNUMBER型の場合、戻されるデータ型は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のデータ型にかかわらず常にDATEです。サポートされるデータ型は、DATE、TIMESTAMP、ORA_TIMESTAMPおよびORA_DATEです。 -
データ型
TIME、TT_TIME、TT_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.
dateがTIMESTAMP型の場合、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_id、last_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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
|
説明
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は、-1から1の範囲内である必要があります。ASINは、-pi/2からpi/2までの範囲の値をラジアンで表して返します。 -
ExpressionがNUMBER型の場合、戻されるデータ型は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は、無制限範囲で指定できます。ATANは、-pi/2からpi/2までの範囲の値をラジアンで表して返します。 -
ExpressionがNUMBER型の場合、戻されるデータ型は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は、無制限範囲で指定できます。ATAN2は、Expression1とExpression2の符号に応じて、ラジアンで表された-piからpiまでの範囲の値を返します。 -
ExpressionがNUMBER型の場合、戻されるデータ型はNUMBERです。他のすべての数値データ型の場合、戻されるデータ型はBINARY_DOUBLEです。 -
Expression1またはExpression2の値がNULLの場合や、Expression1とExpression2の両方の値が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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。 |
|
|
集計関数の引数に重複する行を含めます。 |
|
|
集計関数の引数から、重複する列の値を削除します。 |
|
|
指定すると、集計分析関数を示します。分析関数の詳細は、「分析関数」を参照してください。 |
説明
-
GROUP BYが使用されていない空の表でAVGを計算すると、AVGはNULLを戻します。 -
空のグループまたはグループ化された空の表(
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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
|
説明
-
この関数は、
TT_INTEGERNOTNULLを戻します。 -
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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
|
説明
-
この関数は、
TT_INTEGERNOTNULLを戻します。 -
BITNOT関数は、(~expression)にリライトされます。詳細は、ビット単位のNOT演算子を参照してください。
BITOR
expression1とexpression2のビットでOR演算を計算します。
SQL構文
BITOR (Expression1,Expression2)
パラメータ
BITORには、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
|
説明
-
この関数は、
TT_INTEGERNOTNULLを戻します。 -
BITOR関数は、(expression1|expression2)にリライトされます。詳細は、ビット単位のOR演算子を参照してください。
BITXOR
expression1とexpression2のビットで排他OR演算を計算します。
SQL構文
BITXOR (Expression1,Expression2)
パラメータ
BITXORには、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
|
説明
-
この関数は、
TT_INTEGERNOTNULLを戻します。 -
BITXOR関数は、(expression1^expression2)にリライトされます。詳細は、ビット単位の排他OR演算子を参照してください。
CAST
データをある型から別の型に変換できます。CASTは定数が使用可能な場合に使用できます。CASTは引数の正確なデータ型を指定する場合に役立ちます。-のような単項演算子、またはTO_CHARやTO_DATEのような1つのオペランドを持つ関数の場合に特にあてはまります。
値は、互換性のあるデータ型に対してのみCASTできます。ただし、NULLを除きます。NULLは他の任意のデータ型にキャストできます。NULLリテラルを必要なターゲット・タイプに変換する場合、CASTは必要ありません。
次の変換がサポートされています。
-
数値から数値または2進化10進コード(BCD)へ
-
NCHARからNCHAR -
CHAR文字列からBINARY文字列またはDATE、TIMEまたはTIMESTAMPへ -
BINARY文字列からBINARYまたはCHAR文字列へ -
DATE、TIMEまたはTIMESTAMPからCHARへ
SQL構文
CAST
( {Expression | NULL} AS DataType )パラメータ
CASTには、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
変換する値を指定します。 |
|
|
結果のデータ型を指定します。 |
説明
-
ドメイン名への
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>256の場合、TimesTenによってnmod 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がNUMBER型の場合、戻されるデータ型は最大の精度およびスケールを持つNUMBERです。それ以外の場合、CEILでは、Expressionの数値データ型と同じデータ型が戻されます。 -
Expressionの値がNULLの場合は、NULLが戻されます。Expressionの値が-INF、INFまたはNaNの場合、戻り値はそれぞれ-INF、INFまたは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以外のexpressionを戻します。すべての式がNULLと評価された場合は、NULLを戻します。
SQL構文
COALESCE(Expression1, Expression2 [,...])パラメータ
COALESCEには、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
式リスト内の式。式リスト内の最初のNULL以外の式が戻されます。 各式は順に評価され、2つ以上の式が存在する必要があります。 |
説明
例
次に、COALESCE式を使用した例を示します。COALESCE式を使用して、manager_id = 100である従業員のうち最初の10人に対して、commission_pctを戻します。commission_pctがNOT NULLの場合、commission_pctの元の値が戻されます。commission_pctがNULLの場合には、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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
|
説明
-
CONCATは、Expression2が連結されたExpression1を返します。 -
Expression1とExpression2の型には互換性が必要です。 -
Expression2がNULLの場合、CONCATはExpression1を返します。Expression1がNULLの場合、CONCATはExpression2を返します。 -
Expression1とExpression2の両方がNULLの場合、CONCATはNULLを返します。 -
NCHARとNVARCHAR2も同様に扱われます。扱われるオペランドのいずれかが可変長であれば、戻り値も可変長になります。その他の場合、戻り値は固定長です。 -
CONCATの戻り型は、Expression1とExpression2の型によって決まります。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)CLOBNCLOBNCLOBNCLOBNCHARNCLOBNCLOBCHAR(n)NCLOBNCHAR(n)CLOBNCLOB
例
次の例では、姓と名前を連結します。
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がNUMBER型の場合、戻されるデータ型は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がNUMBER型の場合、戻されるデータ型はNUMBERです。他のすべての数値データ型の場合、戻されるデータ型はBINARY_DOUBLEです。 -
Expressionの値がNULLの場合は、NULLが戻されます。
例
COSH関数を使用して、0のハイパボリック・コサインを返します。
Command> SELECT COSH(0) "Hyperbolic cosine of 0" FROM dual; < 1 > 1 row found.
COUNT
SQL構文
COUNT ({* | [ALL | DISTINCT]{Expression|ROWID}})
[OVER ([AnalyticClause])]パラメータ
COUNTには、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
任意の数値データ型、または暗黙的に数値型に変換可能な数値以外の型を取ります。 行の数を返します。 |
|
|
|
|
|
集計関数の引数に重複する行を含めます。 |
|
|
集計関数の引数から、重複する列の値を削除します。 |
|
|
TimesTenでは、表に保存される各行にROWIDと呼ばれる一意のIDが割り当てられます。ROWID値は |
|
|
指定すると、集計分析関数を示します。分析関数の詳細は、「分析関数」を参照してください。 |
説明
-
デフォルトの戻り型は、
TT_BIGINTです。TT_CountAsIntオプティマイザ・ヒントを指定すると、COUNT関数がTT_INTEGERデータ型とTT_BIGINTデータ型のどちらを返すかを制御できます。このヒントに1の値を指定した場合、戻りデータ型はTT_INTEGERになります。0の値を指定した場合(またはこのヒントを指定しない場合)、戻りデータ型はTT_BIGINTになります。TT_CountAsIntオプティマイザ・ヒントは、文レベルおよび接続レベルでサポートされます。文レベルのオプティマイザ・ヒントの詳細は、「文レベルのオプティマイザ・ヒント」を参照してください。接続レベル・オプティマイザ・ヒントの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のOptimizerHintに関する項を参照してください。 -
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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
検索値と比較される式。 |
|
|
式が1つ以上の検索値と比較されます。 |
|
|
式が |
|
|
一致するものが検出されない場合、デフォルト値が戻されます。 |
説明
式が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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
構文、セマンティクスおよび制限事項の詳細は、「分析関数」を参照してください。 |
|
|
構文、セマンティクスおよび制限事項の詳細は、「分析関数」を参照してください。 |
説明
-
ランクは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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
1つ以上の式。 |
説明
-
ELEMENTIDCOMPUTESQL関数では、1つ以上の式を使用できます。この式のリストは、ハッシュ分散キーを表します。この関数によって戻される要素IDは、トランザクション内では固定されています。TimesTen Scaleoutのトポロジが変更されると、行が別の要素にマップされることで、特定の行の要素のIDが変化する場合があります。 -
この関数を使用すると、特定の分散キーが挿入される要素を予測できます。
-
ELEMENTIDCOMPUTEは、TT_INTEGERデータ型を戻します。
ノート:
K-safetyを2に設定した場合、ELEMENTIDCOMPUTEはレプリカ・セットのいずれかの要素のIDを戻します。戻される値は、データ行がローカル要素IDにマップされる場合でも、接続している要素IDでないことがあります。
例
これらの例では、ELEMENTIDCOMPUTE関数の使用方法を示します。
この例(最初の例)では、cust_id分散キーが属するレプリカ・セット内の1つの要素の要素IDを戻すために、ELEMENTIDCOMPUTE関数を呼び出します。また、この問合せによって、cust_idが910から920のcustomers表からcust_id、last_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.
この例(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.
この例(3番目の例)は、ELEMENTIDCOMPUTE関数を使用して、データの特定の行が挿入される要素を予測する方法を示しています。customers表に、1から1000のcust_id値があります。cust_id 1003、2000または2400が挿入される要素を予測します。たとえば、1003のcust_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.
2000のcust_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.
2400のcust_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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
オペランドまたは列は、任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。 |
説明
-
EXPは、Expressionと同じ型の値を返します。 -
ExpressionがNUMBER型の場合、戻されるデータ型は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とDateTimExpressionまたはIntervalExpressionの組合せが、あいまいな結果になることがあります。この場合、TimesTenではUNKNOWNが返されます。 -
抽出するフィールドは、
IntervalExpressionorDateTimeExpressionのフィールドにする必要があります。たとえば、DATE値からは、YEAR、MONTHおよびDAYのみを抽出できます。同様に、TIME、DATEまたはTIMESTAMPデータ型からは、HOUR、MINUTEまたはSECONDのみを抽出できます。 -
フィールドは、
NUMBER値に抽出されます。
例
次に、秒のフィールドを時間隔の結果sysdate-t1.createtimeから抽出する例を示します。
SELECT EXTRACT(SECOND FROM sysdate-t1.createtime) FROM t1;
次に、秒のフィールドをシステム表dualのsysdateから抽出する例を示します。
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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
サポートされる |
|
|
|
|
|
構文、セマンティクスおよび制限の詳細は、「分析関数」を参照してください。 |
説明
-
集合内の最初の値が
NULLの場合、IGNORE NULLSを指定していないかぎり、FIRST_VALUEはNULLを戻します。関数が、集合内の最初の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がNUMBER型の場合、戻されるデータ型は最大の精度およびスケールを持つNUMBERです。それ以外の場合、FLOORでは、Expressionの数値データ型と同じデータ型が戻されます。 -
Expressionの値がNULLの場合は、NULLが戻されます。Expressionの値が-INF、INFまたはNaNの場合、戻り値はそれぞれ-INF、INFまたは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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
最大の式の値を決定するために評価される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_DATEとTT_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パラメータ
| パラメータ | 説明 |
|---|---|
|
|
有効な式の構文。「式」を参照してください。 |
|
|
|
|
|
|
例
次の例では、部門の総計が出現した場合に、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を計算します。
-
GROUPING関数をリストの個々の列に適用します。結果は1および0(ゼロ)の集合で、1はROLLUPまたはCUBEで生成された超集合を示します。 -
引数リストの列と同じ順序でこれらの1および0(ゼロ)を配置し、ビット・ベクトルを作成します。
-
このビット・ベクトルを2進数から10進数に変換します。これがグループIDとして戻されます。
たとえば、CUBE(department_id, job_id)でグループ化すると、戻り値は表4-1のようになります。
表4-1 CUBE(department_id, job_id)でのGROUPING_IDの例
| 集計レベル | ビット・ベクトル | GROUPING_ID |
|---|---|---|
|
部門および職務の通常のグループ行 |
0 0 |
0 |
|
|
0 1 |
1 |
|
|
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 ]...)
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
有効な式の構文。「式」を参照してください。 |
例
次の例では、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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
文字列 |
|
|
検索を開始する位置です(オプション)。 |
|
|
|
説明
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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
サポートされる |
|
|
|
|
|
構文、セマンティクスおよび制限事項の詳細は、「分析関数」を参照してください。 |
説明
-
集合内の最後の値が
NULLの場合、IGNORE NULLSを指定していないかぎり、LAST_VALUEはNULLを戻します。関数が、集合内の最後のNULL以外の値を戻す場合はIGNORE NULLS、集合内のすべての値がNULLの場合はNULLを指定します。
例
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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
最小の式の値を決定するために評価される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_DATEとTT_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
式内の指定した文字列の長さを返します。LENGTHはNUMBER型を返します。
SQL構文
{LENGTH|LENGTHB|LENGTH4} (CharExpr) パラメータ
LENGTHには、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
長さを返す対象の文字列です。サポートされる |
説明
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がNUMBER型の場合、戻されるデータ型は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関数は、Expression2の対数(底Expression1)を返します。底Expression2には0または1以外の任意の正の値を指定できます。Expression1には任意の正の値を指定できます。
SQL構文
LOG(Expression1,Expression2)パラメータ
LNには、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
オペランドまたは列は、任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。 |
|
|
オペランドまたは列は、任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。 |
説明
-
Expression1またはExpression2がNUMBER型の場合、戻されるデータ型はNUMBERです。他のすべての数値データ型の場合、戻されるデータ型はBINARY_DOUBLEです。 -
Expression1またはExpression2の値がNULLの場合や、Expression1とExpression2の両方がNULLの場合は、NULLが返されます。
例
LOG関数を使用して、100の自然対数を返します。
Command> SELECT LOG(10,100) "Log base 10 of 100" FROM dual; < 2 > 1 row found.
LOWERおよびUPPER
LOWER関数は、CHAR、NCHAR、VARCHAR2、NVARCHAR2、CLOBまたはNCLOB型の式を小文字に変換します。UPPER関数は、CHAR、NCHAR、VARCHAR2、NVARCHAR2、CLOBまたはNCLOB型の式を大文字に変換します。CHAR型およびVARCHAR2型では、文字セマンティクスがサポートされています。結果のデータ型は式のデータ型と同じです。
SQL構文
{UPPER | LOWER} (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関数は、左側がn文字の長さまでExpression2の連続文字で埋め込まれたExpression1を戻します。この関数は、問合せの出力を書式設定する場合に役立ちます。
SQL構文
LPAD (Expression1, n [,Expression2])パラメータ
LPADには、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
左側を文字で埋め込む |
|
|
|
|
|
|
説明
-
Expression1がCHAR型またはVARCHAR2型の場合、戻されるデータ型はVARCHAR2です。Expression1がNCHAR型またはNVARCHAR2型の場合、戻されるデータ型はNVARCHAR2です。Expression1がLOBの場合、戻されるデータ型は指定されたLOBデータ型と同じになります。 -
nが定数の場合、戻されるデータ型の長さはnと等しくなります。それ以外の場合、結果の最大長である8300が戻されます。 -
Expression1とExpression2には、TT_CHAR、TT_VARCHAR、TT_NCHARおよびTT_NVARCHARを指定できます。Expression1がTT_CHAR型またはTT_VARCHAR型の場合、戻されるデータ型はTT_VARCHARです。Expression1がTT_NCHAR型またはTT_NVARCHAR型の場合、戻されるデータ型はTT_NVARCHARです。 -
CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOBまたはNCLOBデータ型の場合:-
Expression1とExpression2のどちらかがNULLの場合、結果はNULLになります。nが0(ゼロ)以下の場合も、結果はNULLです。
-
-
TT_CHAR、TT_VARCHAR、TT_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関数は、Expression2に含まれるすべての文字をExpression1の左端から削除します。TimesTenでは、Expression1の最初の文字からスキャンが開始され、Expression2に存在しない文字に到達するまで、Expression2に指定した文字のすべてが削除され、結果が戻されます。
SQL構文
LTRIM (Expression1 [,Expression2])
パラメータ
LTRIMには、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
切捨ての対象とする |
|
|
|
説明
-
Expression1がCHAR型またはVARCHAR2型の場合、戻されるデータ型はVARCHAR2です。Expression1がNCHAR型またはNVARCHAR2型の場合、戻されるデータ型はNVARCHAR2です。Expression1がCLOBまたはNCLOBの場合、戻されるデータ型は指定されたLOBデータ型と同じになります。戻されるデータ型の長さは、Expression1のデータ型の長さと等しくなります。 -
Expression1がCHAR長セマンティクスで定義されたデータ型の場合、戻される長さはCHAR長セマンティクスで表現されます。 -
Expression1とExpression2のどちらかがNULLの場合、結果はNULLになります。 -
Expression1とExpression2には、TT_CHAR、TT_VARCHAR、TT_NCHARおよびTT_NVARCHARを指定できます。Expression1がTT_CHAR型またはTT_VARCHAR型の場合、戻されるデータ型はTT_VARCHARです。Expression1がTT_NCHAR型またはTT_NVARCHAR型の場合、戻されるデータ型はTT_NVARCHARです。 -
Expression1がCHAR型またはVARCHAR2型で、Expression2がNCHAR型またはNVARCHAR2型の場合、Expression2はLTRIMの実行前にCHARまたはVARCHAR2に変換されます。Expression2の変換は失われる可能性があります。Expression2の切捨て文字がデータベース文字セットに含まれていないと、この問合せにより予期しない結果が発生する可能性があります。 -
CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOBまたはNCLOB型の場合:-
Expression1のすべての文字がLTRIM関数により削除された場合、結果はNULLになります。
-
-
TT_CHAR、TT_VARCHAR、TT_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をコールして、SYSDATEをVARCHAR2に変換します。
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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。 |
|
|
集計関数の引数に重複する行を含めます。 |
|
|
集計関数の引数から、重複する列の値を削除します。 |
|
|
TimesTenでは、表に保存される各行にROWIDと呼ばれる一意のIDが割り当てられます。ROWID値は |
|
|
指定すると、集計分析関数を示します。分析関数の詳細は、「分析関数」を参照してください。 |
説明
-
GROUP BYが使用されていない空の表でMAXを計算すると、MAXはNULLを戻します。 -
空のグループまたはグループ化された空の表(
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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。 |
|
|
集計関数の引数に重複する行を含めます。 |
|
|
集計関数の引数から、重複する列の値を削除します。 |
|
|
TimesTenでは、表に保存される各行にROWIDと呼ばれる一意のIDが割り当てられます。ROWID値は |
|
|
指定すると、集計分析関数を示します。分析関数の詳細は、「分析関数」を参照してください。 |
説明
-
GROUP BYが使用されていない空の表でMIN関数を計算すると、MINはNULLを戻します。 -
空のグループまたはグループ化された空の表(
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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
|
説明
-
MODはExpression1をExpression2で除算した余りを返します。 -
Expression2が0の場合、MODはExpression1を返します。 -
Expression1とExpression2のどちらかがNULLの場合、MODはNULLを返します。 -
MODはバイナリ算術演算として扱われるため、戻り型は「データ型」の章に示された規則に従って決まります。 -
MOD関数の動作は、2つのオペランドのいずれかが負の場合には古典数学のモジュール関数とは異なる動作をします。次の表に、その違いを示します。M N 古典数学のモジュール関数 MOD(M,N) 1132211-
3-12-1131-2-11-3-2-2
次の例では、式mの値が式nの値で割り切れるかどうかをテストします。
SELECTm,nFROM test WHERE MOD(m,n) = 0;
MONTHS_BETWEEN
MONTHS_BETWEEN関数は、日付date1とdate2の間の月数を戻します。
SQL構文
MONTHS_BETWEEN(date1, date2)
パラメータ
MONTHS_BETWEENには、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
日時値、または日時値に変換可能な任意の値。 |
|
|
日時値、または日時値に変換可能な任意の値。 |
説明
入力パラメータは、TIMEまたはTT_TIMEデータ型を除き、サポートされているすべての日時データ型の組合せになります。サポートされている日時データ型は、DATE、TIMESTAMP、TT_DATE、TT_TIMESTAMP、ORA_DATEおよびORA_TIMESTAMPです。日時データ型の詳細は、「データ型」を参照してください。
戻りデータ型は、NUMBERです。
MONTHS_BETWEENは、日付date1とdate2の間の月数を戻します。
-
date1がdate2より後の日付の場合、結果は正の値になります。 -
date1がdate2より前の日付の場合、結果は負の値になります。 -
date1とdate2の両方が月の同じ日または月の最終日の場合、戻される結果は整数になります。それ以外の場合に戻される結果は、date1とdate2のパラメータの時刻部分の差を考慮した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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
指定されたUnicode値。このUnicode値を持つ文字が戻されます。結果のデータ型は |
例
次の例では、NCHAR文字187が戻されます。
Command> SELECT NCHR(187) FROM dual; < > > 1 row found.
NLS_CHARSET_ID
NLS_CHARSET_IDは、文字セット名に対応する文字セットID番号を戻します。
SQL構文
NLS_CHARSET_ID(String)パラメータ
NLS_CHARSET_IDには、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
入力文字列の引数は、文字セットを表す実行時の 入力文字列がサポートされているTimesTenの文字セットに対応している場合は、関連付けられた文字セットID番号が戻されます。それ以外の場合は、
|
例
次の例では、文字セットUS7ASCIIの文字セットID番号を戻します。
Command> SELECT nls_charset_id('US7ASCII') FROM dual;
< 1 >
1 row found.
次の「NLS_CHARSET_NAME」の項に示す、NLS_CHARSET_NAMEへの入力としてNLS_CHARSET_IDの結果を使用する例も参照してください。
NLS_CHARSET_NAME
NLS_CHARSET_NAMEは、文字セットID番号に対応する文字セット名を戻します。
SQL構文
NLS_CHARSET_NAME(Number)パラメータ
NLS_CHARSET_NAMEには、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
文字セットIDを表す番号。番号がサポートされているTimesTenの文字セットIDに対応していない場合は、 |
説明
文字セット名は、データベース文字セットの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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
|
説明
-
戻されるソート・キー値のデータ型は
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つの式を比較します。値が同じ場合、NULLIFはNULLを戻し、異なる場合は最初の式を戻します。
SQL構文
NULLIF(Expression1, Expression2)
パラメータ
NULLIFには、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
|
説明
-
両方のパラメータが数値データ型の場合、Timestenは、数値の優先順位が高い方の引数を判断し、残りの引数をこのデータ型に暗黙的に変換して、このデータ型を戻します。パラメータが数値データ型ではない場合、それらのデータ型ファミリは同じである必要があります。
-
LOBデータ型は、NULLIFでサポートされません。TIMEデータ型は、両方の列がTIMEデータ型の場合のみサポートされます。 -
NULLIFファンクションは、次のCASE式と論理的に同じです。CASE WHEN Expression1 = Expression2 THEN NULL ELSE Expression1 END
ノート:
詳細は、「CASE式」を参照してください。
例
次の例では、入社時から職務が変わった従業員を選択し、job_history表のjob_idとemployees表の現在の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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
この引数には、任意の |
|
|
' |
例
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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
この引数には、任意の |
|
|
|
例
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とExpression2のデータ型には互換性が必要です。データ型が異なる場合、可能であればデータ型を暗黙的に変換します。暗黙的に変換できない場合、エラーが戻されます。次に、データ型を暗黙的に変換する方法について説明します。
-
Expression1が文字データの場合は、Expression2がExpression1と同じデータ型に変換され、その結果がExpression1の文字セットのVARCHAR2で戻されます。 -
Expression1が数値の場合は、TimesTenによって数値の優先順位の最も高い式が判別され、もう一方の引数がそのデータ型に暗黙的に変換されて、そのデータ型が戻されます。
-
-
Expression1がNULLの場合、NVL関数はExpression2を返します。Expression1がNOT NULLの場合、NVL関数はExpression1を返します。 -
NVL関数は、SELECT、UPDATE、DELETE文の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関数は、BaseのExponent乗を戻します。BaseとExponentには任意の数値を指定できますが、Baseが負数の場合、Exponentは整数にする必要があります。
SQL構文
POWER (Base,Exponent)
パラメータ
POWERには、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
オペランドまたは列には、任意の数値型を指定できます。 |
|
|
オペランドまたは列には、任意の数値型を指定できます。 |
説明
BaseとExponentのどちらかがBINARY_FLOAT型またはBINARY_DOUBLE型の場合、戻されるデータ型はBINARY_DOUBLEになります。BaseがNUMBER型で、ExponentがBINARY_FLOAT型またはBINARY_DOUBLE型ではない場合、戻されるデータ型は、最大の精度とスケールを持つNUMBERになります。BaseがTT*数値型のいずれか(TT_BIGINT、TT_INTEGER、TT_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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
構文、セマンティクスおよび制限事項の詳細は、「分析関数」を参照してください。 |
|
|
構文、セマンティクスおよび制限事項の詳細は、「分析関数」を参照してください。 |
説明
-
戻り型は
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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
置換するサブストリングを含むソース文字列。 |
|
|
元の文字列で置換される文字列。 |
|
|
元の文字列に出現するすべての検索文字列の置換に使用される文字列。 |
説明
-
REPLACEは、ソースString内で出現するすべてのSearchStringがReplacementStringに置換された文字列を戻します。 -
String、SearchStringおよびReplacementStringには、CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOBまたはNCLOBのデータ型を指定できます。TimesTenデータ型およびOracle Databaseデータ型の両方がサポートされます。BLOBを除く文字ではないすべてのデータ型は、暗黙的に文字列データ型に変換されます。 -
StringがCHARまたはVARCHAR2の場合、戻される文字列はVARCHAR2データ型になります。StringがNCHARまたはNVARCHAR2の場合、戻される文字列はNVARCHAR2データ型になります。CLOBまたはNCLOBデータ型の場合、戻されるデータ型はStringで指定されたデータ型と同じになります。文字セットは、ソースStringと同じになります。 -
戻される文字列の長さが0(ゼロ)の場合、
NULLがOracle Database データ型に戻され、長さ0(ゼロ)の文字列がTimesTenデータ型に戻されます。すべてのデータ型の詳細は、「データ型」を参照してください。
例
次の例では、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)には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
丸められる日付。日付値に解決される必要があります。
|
|
|
書式モデルの丸め単位。 |
説明
-
日付には、
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を省略します。時刻が13:00:00のTIMESTAMP型としてDateを指定します。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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
オペランドまたは列には、任意の数値型を指定できます。 |
|
|
何桁に丸めるかを示すオペランドまたは列。負数を指定すると、小数点の左側のその桁を丸めることができます。 |
説明
-
Expression2を省略すると、戻されるデータ型はExpression1の数値データ型と同じになります。 -
Expression2を指定すると、戻されるデータ型は最大の精度およびスケールを持つNUMBERになります。 -
Expression1がBINARY_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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
構文、セマンティクスおよび制限事項の詳細は、「分析関数」を参照してください。 |
|
|
構文、セマンティクスおよび制限事項の詳細は、「分析関数」を参照してください。 |
説明
-
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関数は、n文字の長さになるまでExpression2を必要な数だけ繰り返して右側を埋め込んだExpression1を戻します。この関数は、問合せの出力を書式設定する場合に役立ちます。
SQL構文
RPAD (Expression1, n [,Expression2])
パラメータ
RPADには、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
右側を文字で埋め込む |
|
|
|
|
|
|
説明
-
Expression1がCHAR型またはVARCHAR2型の場合、戻されるデータ型はVARCHAR2です。Expression1がNCHAR型またはNVARCHAR2型の場合、戻されるデータ型はNVARCHAR2です。Expression1がLOBの場合、戻されるデータ型は指定されたLOBデータ型と同じになります。 -
nが定数の場合、戻されるデータ型の長さはnと等しくなります。それ以外の場合、結果の最大長である8300が戻されます。 -
Expression1とExpression2には、TT_CHAR、TT_VARCHAR、TT_NCHARおよびTT_NVARCHARを指定できます。Expression1がTT_CHAR型またはTT_VARCHAR型の場合、戻されるデータ型はTT_VARCHARです。Expression1がTT_NCHAR型またはTT_NVARCHAR型の場合、戻されるデータ型はTT_NVARCHARです。 -
CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOBまたはNCLOBデータ型の場合:-
Expression1とExpression2のどちらかがNULLの場合、結果はNULLになります。nが0(ゼロ)以下の場合も、結果はNULLです。
-
-
TT_CHAR、TT_VARCHAR、TT_NCHARおよびTT_NVARCHAR型の場合:-
Expression1とExpression2のどちらかがNULLではなく、nが0以下の場合、結果は空の文字列になります。
-
例
employees表のfirst_nameとlast_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がCHAR型またはVARCHAR2型の場合、戻されるデータ型はVARCHAR2です。Expression1がNCHAR型またはNVARCHAR2型の場合、戻されるデータ型はNVARCHAR2です。Expression1がCLOBまたはNCLOBの場合、戻されるデータ型は指定されたLOBデータ型と同じになります。戻されるデータ型の長さは、Expression1のデータ型の長さと等しくなります。 -
Expression1がCHAR長セマンティクスで定義されたデータ型の場合、戻される長さはCHAR長セマンティクスで表現されます。 -
Expression1とExpression2のどちらかがNULLの場合、結果はNULLになります。 -
Expression1とExpression2には、TT_CHAR、TT_VARCHAR、TT_NCHARおよびTT_NVARCHARを指定できます。Expression1がTT_CHAR型またはTT_VARCHAR型の場合、戻されるデータ型はTT_VARCHARです。Expression1がTT_NCHAR型またはTT_NVARCHAR型の場合、戻されるデータ型はTT_NVARCHARです。 -
Expression1がCHAR型またはVARCHAR2型で、Expression2がNCHAR型またはNVARCHAR2型の場合、Expression2はRTRIMの実行前にCHARまたはVARCHAR2に変換されます。Expression2の変換は失われる可能性があります。Expression2の切捨て文字がデータベース文字セットに含まれていないと、この問合せにより予期しない結果が発生する可能性があります。 -
CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOBおよびNCLOB型の場合:-
RTRIM関数によってExpression1のすべての文字が削除された場合、結果はNULLになります。
-
-
TT_CHAR、TT_VARCHAR、TT_NCHARおよびTT_NVARCHAR型の場合:-
RTRIM関数によってExpression1のすべての文字が削除された場合、結果は空の文字列になります。
-
例
次の例では、表rtrimtestのcol1から後続の空白を削除します。
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がNUMBER型の場合、戻されるデータ型は最大の精度およびスケールを持つ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がNUMBER型の場合、戻されるデータ型は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がNUMBER型の場合、戻されるデータ型は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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
有効な値は、ORAおよびTTバリアントの付いた |
説明
-
英数字の文字列を、文字列の最初の文字で始まり3つの数字が続く4文字のコードに変換します。
-
音声表現については、『The Art of Computer Programming, Volume 3: Sorting and Searching』次のように定義されています(Donald E. Knuth著で)。
-
文字列の最初の文字を残し、A、E、I、O、Uの文字が出てきた場合にはすべて削除します。文字の処理で大文字と小文字は区別されません。
-
H、WおよびYが出てきた場合には、すべて削除します。
-
残った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
-
2つ以上の同じ数字を含む文字が元の名前内(ステップ1実行前の名前)で隣接している場合は、数字を1つ残してすべて削除します。
-
結果の最初の4文字を戻します(結果が4文字より少ない場合は'0'を埋め込みます)。
-
-
InputStringに対してsoundexコードを作成できない場合、この関数はNULLを戻します。たとえば、InputStringに英字が含まれていない場合は、NULLが戻されます。 -
入力型と出力型のマッピング:
入力型 出力型 VARCHAR2(x)、CHAR、CLOBVARCHAR2(4)TT_CHAR(x)、TT_VARCHAR(x)TT_VARCHAR(4)NVARCHAR2(x)、NCHAR(x)、NCLOBNVARCHAR2(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がNUMBER型の場合、戻されるデータ型は最大の精度およびスケールを持つNUMBERです。ExpressionがBINARY_FLOAT型の場合、戻されるデータ型はBINARY_FLOATになります。それ以外の場合、戻されるデータ型はBINARY_DOUBLEです。 -
ExpressionがNUMBER型の場合、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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
この関数がサブストリングを返す対象の文字列です。値には、
|
|
|
サブストリングを開始する位置です。 |
|
|
サブストリングに含まれる文字数です。 |
説明
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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。 |
|
|
集計関数の引数に重複する行を含めます。 |
|
|
集計関数の引数から、重複する列の値を削除します。 |
|
|
指定すると、集計分析関数を示します。分析関数の詳細は、「分析関数」を参照してください。 |
説明
-
GROUP BYが使用されていない空の表でSUM関数を計算すると、SUMはNULLを戻します。 -
空のグループまたはグループ化された空の表(
GROUP BYを使用)でSUM関数を計算すると、SUMは何も戻しません。 -
ソースが
TT_TINYINT、TT_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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
値: 他の値の場合には、 |
|
|
サポートされる値は、次のとおりです。
|
|
|
長さは1から4000までのバイト値です。 |
parameterに対してサポートされる値の説明は、次のとおりです。
| パラメータ | 説明 |
|---|---|
|
|
モジュール内の位置(アプリケーション名)を示し、OCIで設定します。 |
|
|
次のタイプのユーザーに対する認証方法を戻します。
|
|
|
OCIを介してアプリケーションによって格納できるユーザー・セッション情報を返します。 |
|
|
現在アクティブなデータベース・スキーマの名前。この名前は、アクティブな任意の定義者権限オブジェクトの所有者を反映するよう、セッション中に変更される場合があります。ビュー定義の本体で直接使用すると、そのビューを使用しているSQL文の実行時に使用されるデフォルトのスキーマが返されます。SQL文で使用されるビューは、定義者権限を持つとみなされません。
|
|
|
現在アクティブな権限を持つデータベース・ユーザー名。この名前は、アクティブな任意の定義者権限オブジェクトの所有者を反映するよう、セッション中に変更される場合があります。定義者権限オブジェクトがアクティブでない場合、 |
|
|
現在アクティブな権限を持つデータベース・ユーザーの識別子。 |
|
|
データベースでユーザーが作成された方法を戻します。特に、
|
|
|
既存の |
|
|
セッションで現在使用中の言語と地域、およびデータベース文字セット。書式は次のとおりです。
|
|
|
OCIを介して設定されるアプリケーション名(モジュール)。 |
|
|
バイナリ・ソートまたは言語ソート。 |
|
|
ログオン時のデータベース・ユーザー名。この値はセッション中を通して変更されません。 |
|
|
ログオン時のデータベース・ユーザーの識別子。 |
|
|
現在の接続の接続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サーバー構文と互換性があります。 -
SYSDATEとGETDATEに引数はありません。DATE値を戻します。 -
SYSDATEまたはGETDATEの値は、実行時にのみ検索されます。 -
日付に対する変更(たとえば、異なるタイムゾーンやサマータイムの組込みなど)は、システム・レベルで実行する必要があります。
SYSDATEまたはGETDATEを使用して日付を変更することはできません。 -
SYSDATE関数とGETDATE関数はDATEデータ型を戻します。DATEの書式は'YYYY-MM-DD HH:MI:SS'です。 -
SYSDATEとGETDATEは組込み関数で、日付式を使用しているところで使用できます。これらは、INSERT...SELECTの選択リスト、WHERE句、挿入値に使用できます。SUMまたはAVG集計(オペランドは数値である必要があります)、COUNT集計(列名が必要です)では使用できません。 -
SYSDATEとGETDATEは、単一のSQL文では、同じDATE値を戻します。 -
TT_SYSDATEリテラルおよびORA_SYSDATEリテラルがサポートされています。TT_SYSDATEは、TT_TIMESTAMPデータ型を戻します。ORA_SYSDATEはDATEデータ型を戻します。
例
この例では、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_CHARをSYSDATEともに使用して、表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がNUMBER型の場合、戻されるデータ型は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がNUMBER型の場合、戻されるデータ型は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の有効な値は、次のとおりです。-
SQL_TSI_FRAC_SECOND -
SQL_TSI_SECOND -
SQL_TSI_MINUTE -
SQL_TSI_HOUR -
SQL_TSI_DAY -
SQL_TSI_WEEK -
SQL_TSI_MONTH -
S
QL_TSI_QUARTER -
SQL_TSI_YEAR
-
-
SQL_TSI_FRAC_SECONDは、10億分の1秒単位で表されます。 -
戻り型は、元のデータ型と同じです。たとえば、式が
TIMESTAMP型の場合、結果のデータ型はTIMESTAMPになります。正数のタイムスタンプ式(0001-01-01)のみ、問合せと結果の両方で使用できます。TT_DATEおよびTT_TIMESTAMPでは、データ型の開始範囲が1753-01-01であるため、タイムスタンプ式はこの日付と同等かそれ以上である必要があります。 -
IntegerExpressionまたはTimestampExpressionがNULLの場合、結果はNULLになります。 -
この関数は、
IntegerExpressionで求められる時間間隔の合計と時間隔を計算して、指定されたTimestampExpressionに加算します。1年加算するとタイムスタンプは12か月進み、1週間加算するとタイムスタンプは7日進みます。IntegerExpressionが負の場合は、指定された時間隔がTimestampExpressionから減算されます。 -
指定された時間隔およびタイムスタンプ式を使用することによって、精度が失われる可能性があります。たとえば、時間隔が
SQL_TSI_HOURのときに、IntegerExpressionに2を指定して、TimestampExpressionにTT_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の有効な値は、次のとおりです。-
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またはTimestampExpression2がNULLの場合、結果は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またはBINARYをBLOBに変換します。
この関数は、TimesTen Scaleoutではサポートされていません。
SQL構文
TO_BLOB ( ValidDataType )パラメータ
TO_BLOBには、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
値は、 |
例
次の例では、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関数は、DATE、TIMESTAMPまたは数値の入力値をVARCHAR2に変換します。
SQL構文
TO_CHAR (Expression1[,Expression2[,Expression3]])
パラメータ
TO_CHARには、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
書式文字列。省略された場合、TimesTenではデフォルトの日付書式( |
|
|
現在は無視されているNLSパラメータを指定するための、 |
説明
-
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に変換します。
-
CHAR、VARCHAR2、NVARCHAR2、TT_VARCHAR、TT_NVARCHARまたはNCLOBデータ型のいずれかに含まれる文字値 -
DATEまたはTIMESTAMPデータ型に含まれる日時値 -
NUMBER、BINARY_FLOATまたはBINARY_DOUBLEデータ型に含まれる数値
この関数は、TimesTen Scaleoutではサポートされていません。
SQL構文
TO_CLOB ( ValidDataType )パラメータ
TO_CLOBには、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
前述の有効なデータ型のいずれかの値。 |
説明
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関数は、CHAR、VARCHAR2、CLOBまたはNCLOB引数をDATEデータ型の値に変換します。
SQL構文
TO_DATE (Expression1[,Expression2[,Expression3]])
パラメータ
TO_DATEには、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
書式文字列。この式は、通常は必須です。 |
|
|
現在は無視されている |
説明
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関数は、CHAR、VARCHAR2、CLOBまたはNCLOBの引数をTIMESTAMPデータ型の値に変換します。
SQL構文
TO_TIMESTAMP (Expression1[,Expression2[,Expression3]])
パラメータ
TO_TIMESTAMPには、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
|
|
|
|
説明
-
TO_TIMESTAMP関数は、CHAR、VARCHAR2、CLOBまたはNCLOBの式(Expression1として関数に渡される式)をTIMESTAMPデータ型の値に変換します。戻りデータ型は、TIMESTAMPです。 -
Expression2の書式文字列には、有効な日時書式要素を使用できます。詳細は、「日時書式モデル」を参照してください。
例
例1: この例は、TO_TIMESTAMP関数の戻りデータ型を示しています。この最大小数秒精度は9です。
Command> describe SELECT TO_TIMESTAMP ('2021-05-07 10:11:12.123456') FROM dual;
Prepared Statement:
Columns:
EXP TIMESTAMP (9) NOT NULL
例2: この例では、文字列をTIMESTAMPデータ型に変換する場合にエラーがスローされます。Expression1はTIMESTAMPデータ型の小数秒精度6を示していますが、書式文字列(Expression2)は2の値(FF2)を示しています。値を切り捨てることができず、変換エラーが発生します。
Command> SELECT TO_TIMESTAMP('2021-01-01 10:11:12.123456',
'YYYY-MM-DD HH:MI:SS.FF2') FROM dual;
2813: Error converting from character string '2021-01-01 10:11:12.123456'
to timestamp
The command failed.
例3: 次の例は、FF[n]のn値が、Expression1の小数秒(この例では123456)の切り捨てが発生しないように収容できる十分な大きさにする必要があることを示しています。2番目の例のようにnの値を指定しない場合、デフォルトは9になります。
Command> SELECT TO_TIMESTAMP ('2021-05-07 10:10:10.123456',
'YYYY-MM-DD HH:MI:SS.FF6') FROM dual;
< 2021-05-07 10:10:10.123456 >
1 row found.
Command> select to_timestamp('2021-05-07 10:10:10.123456',
'YYYY-MM-DD HH:MI:SS.FF') FROM dual;
< 2021-05-07 10:10:10.123456000 >
1 row found.
例4: 次の例は、Expression1が文字列で、書式文字列が指定されている場合の結果を示しています。
Command> SELECT TO_TIMESTAMP ('2021-05-07 10:10:10.123456',
'YYYY-MM-DD HH:MI:SS.FF6') FROM dual;
< 2021-05-07 10:10:10.123456 >
1 row found.
Command> SELECT TO_TIMESTAMP ('2021-05-07 23:00:00.123456',
'YYYY-MM-DD HH24:MI:SS.FF6') FROM dual;
< 2021-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 ('2021-MAY-07 101010.123456789') FROM dual;
< 2021-05-07 10:10:10.123456789 >
1 row found.
Command> SELECT TO_TIMESTAMP ('2021-MAY-07 101010') FROM dual;
< 2021-05-07 10:10:10.000000000 >
1 row found.
Command> SELECT TO_TIMESTAMP ('2021-MAY-07 101010.12') FROM dual;
< 2021-05-07 10:10:10.120000000 >
1 row found.
例7: この例は、TO_TIMESTAMPでTO_CHAR関数を使用して、TIMESTAMPデータ型を明示的なタイムスタンプ書式で返す方法を示しています。
Command> SELECT TO_CHAR(TO_TIMESTAMP ('2021-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/2021 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('2021-05-04 11:12:13.999999');
1 row inserted.
Command> INSERT INTO ts_table VALUES(to_timestamp('04-05-2021 11:12:13.123456789',
'DD-MM-YYYY HH:MI:SS.FF9'));
1 row inserted.
Command> SELECT * FROM ts_table;
< 2021-05-04 11:12:13.999999000 >
< 2021-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;
< 2021-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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
値は、 |
説明
この関数は、TT_VARCHAR、VARCHAR2または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に変換します。
-
CHAR、VARCHAR2、NVARCHAR2、TT_VARCHAR、TT_NVARCHARまたはNCLOBデータ型のいずれかに含まれる文字値 -
DATEまたはTIMESTAMPデータ型に含まれる日時値 -
NUMBER、BINARY_FLOATまたはBINARY_DOUBLEデータ型に含まれる数値
この関数は、TimesTen Scaleoutではサポートされていません。
SQL構文
TO_NCLOB ( ValidDataType )パラメータ
TO_NCLOBには、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
前述の有効なデータ型のいずれかの値。 |
例
次の例では、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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
変換する式で、値は |
|
|
指定すると、その書式が |
説明
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の修飾子の1つ(LEADING、TRAILINGまたはBOTH)をTrim_characterと組み合せて指定します。TRIM ( LEADING|TRAILING|BOTH
Trim_characterFROMExpression) -
TRIMの修飾子の1つ(LEADING、TRAILINGまたはBOTH)をTrim_characterなしで指定します。この場合、Trim_characterは空白にデフォルト設定されます。TRIM ( LEADING|TRAILING|BOTH FROMExpression) -
TRIMの修飾子なしでTrim_characterを指定すると、先行および後続する両方のTrim_characterのインスタンスがExpressionから削除されます。TRIM (
Trim_characterFROMExpression) -
修飾子や
Trim_characterなしでExpressionを指定すると、Expressionから先行および後続する空白文字が削除されます。TRIM (Expression)
パラメータ
TRIMには、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
指定すると、 |
|
|
|
説明
-
ExpressionがCHAR型またはVARCHAR2型の場合、戻されるデータ型はVARCHAR2になります。ExpressionがNCHAR型またはNVARCHAR2型の場合、戻されるデータ型はNVARCHAR2になります。ExpressionがCLOB型の場合、戻されるデータ型はCLOBになります。ExpressionがNCLOB型の場合、戻されるデータ型はNCLOBになります。戻されるデータ型の長さは、Expressionのデータ型の長さと等しくなります。 -
ExpressionがCHAR長セマンティクスで定義されたデータ型の場合、戻される長さはCHAR長セマンティクスで表現されます。 -
Trim_characterとExpressionのどちらかがNULLの場合、結果はNULLになります。 -
Trim_characterとExpressionには、TT_CHAR、TT_VARCHAR、TT_NCHARおよびTT_NVARCHARを指定できます。ExpressionがTT_CHAR型またはTT_VARCHAR型の場合、戻されるデータ型はTT_VARCHARになります。ExpressionがTT_NCHAR型またはTT_NVARCHAR型の場合、戻されるデータ型はTT_NVARCHARになります。 -
Trim_characterがNCHAR型またはNVARCHAR2型で、ExpressionがCHAR型またはVARCHAR2型の場合、Trim_characterはTRIMの実行前にCHARまたはVARCHAR2に変換されます。Trim_characterの変換は失われる可能性があります。Trim_characterがデータベース文字セットに含まれない場合、問合せにより予期しない結果が発生する可能性があります。 -
CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOBおよびNCLOB型の場合:-
Expressionのすべての文字がTRIM関数によって削除された場合、結果はNULLになります。
-
-
TT_CHAR、TT_VARCHAR、TT_NCHARおよびTT_NVARCHAR型の場合:-
Expressionのすべての文字がTRIM関数によって削除された場合、結果は空の文字列になります。
-
例
TRIM関数を修飾子とともに使用して、'0000TRIM Example0000'のExpressionから'0'のTrim_characterを削除します。
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関数を'0'のTrim_characterとともに使用します。修飾子は指定しません。'0000TRIM Example0000'のExpressionから、先行および後続する'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)には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
切り捨てられる日付。 |
|
|
書式モデルの切捨て単位。 |
説明
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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
切り捨てる |
|
|
切り捨てられた後の小数位の桁数。 |
例
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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
式(または式のリスト)のハッシュ値を決定するために使用される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には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
|
例
次の例は、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には次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
|
説明
-
式の値が
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; < 2021-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.