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_INTEGER
NOT
NULL
を戻します。 -
BITAND
関数は、(expression1
&
expression2
)にリライトされます。詳細は、ビット単位のAND
演算子を参照してください。 -
AND
演算は2ビット値を比較します。値が同じ場合、演算子は1を戻します。値が異なる場合、演算子は0を戻します。
例
2つの式に対するビット単位AND
(&
)演算の結果を戻すBITAND
関数を使用します。
Command> SELECT BITAND (1,2) FROM dual; < 0 > 1 row found.
BITNOT
expression
のビットでNOT
演算を計算します。
SQL構文
BITNOT (Expression
)
パラメータ
BITNOT
には、次のパラメータがあります。
パラメータ | 説明 |
---|---|
|
|
説明
-
この関数は、
TT_INTEGER
NOT
NULL
を戻します。 -
BITNOT
関数は、(~expression)
にリライトされます。詳細は、ビット単位のNOT
演算子を参照してください。
BITOR
expression1
とexpression2
のビットでOR
演算を計算します。
SQL構文
BITOR (Expression1
,Expression2
)
パラメータ
BITOR
には、次のパラメータがあります。
パラメータ | 説明 |
---|---|
|
|
説明
-
この関数は、
TT_INTEGER
NOT
NULL
を戻します。 -
BITOR
関数は、(expression1
|
expression2
)にリライトされます。詳細は、ビット単位のOR
演算子を参照してください。
BITXOR
expression1
とexpression2
のビットで排他OR
演算を計算します。
SQL構文
BITXOR (Expression1
,Expression2
)
パラメータ
BITXOR
には、次のパラメータがあります。
パラメータ | 説明 |
---|---|
|
|
説明
-
この関数は、
TT_INTEGER
NOT
NULL
を戻します。 -
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} ASDataType
)
パラメータ
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によってn
mod 256のバイナリ値が戻されます。 -
マルチバイト文字セットでは、
n
を1つのコード・ポイントに解決する必要があります。無効なコード・ポイントは検証されません。無効なコード・ポイントを指定した場合、結果は不確定です。
例
次の例は、ASCIIベースのシステムで、文字セットWE8ISO8859P1
で実行します。
Command> SELECT CHR(67)||CHR(65)||CHR(84) FROM dual; < CAT > 1 row found.
CEIL
CEIL
関数は、Expression
以上の最小の整数を戻します。
SQL構文
CEIL(Expression)
パラメータ
CEIL
には、次のパラメータがあります。
パラメータ | 説明 |
---|---|
|
オペランドまたは列には、任意の数値データ型を指定できます。 |
説明
-
Expression
が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
)
CLOB
NCLOB
NCLOB
NCLOB
NCHAR
NCLOB
NCLOB
CHAR
(
n
)
NCLOB
NCHAR
(
n
)
CLOB
NCLOB
例
次の例では、姓と名前を連結します。
Command> SELECT CONCAT(CONCAT(first_name, ' '), last_name), salary FROM employees; < Steven King, 24000 > < Neena Kochhar, 17000 > < Lex De Haan, 17000 > < Alexander Hunold, 9000 > ... 107 rows found.
次の例では、列id
を列id2
と連結します。この例では、結果のデータ型はNCHAR(40)
になります。
Command> CREATE TABLE cat (id CHAR (20), id2 NCHAR (20)); Command> INSERT INTO cat VALUES ('abc', 'def'); 1 row inserted. Command> SELECT CONCAT (id,id2) FROM cat; < abc def > 1 row found.
||
演算子の説明は、「式の指定」を参照してください。
COS
COS
関数は、Expression
のコサイン(ラジアンで表された角度)を返します。
SQL構文
COS(Expression)
パラメータ
COS
には、次のパラメータがあります。
パラメータ | 説明 |
---|---|
|
オペランドまたは列は、任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。 |
説明
-
Expression
が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つ以上の式。 |
説明
-
ELEMENTIDCOMPUTE
SQL関数では、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
が返されます。 -
抽出するフィールドは、
IntervalExpression
orDateTimeExpression
のフィールドにする必要があります。たとえば、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) 11
3
2
2
11
-
3
-1
2
-11
3
1
-2
-11
-3
-2
-2
次の例では、式m
の値が式n
の値で割り切れるかどうかをテストします。
SELECTm
,n
FROM 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
、CLOB
VARCHAR2(4)
TT_CHAR
(x
)、TT_VARCHAR
(x
)TT_VARCHAR(4)
NVARCHAR2
(x
)、NCHAR
(x
)、NCLOB
NVARCHAR2(4)
TT_NCHAR
(x
)、TT_NVARCHAR
(x
)TT_NVARCHAR(4)
例
SOUNDEX
関数を使用して、姓が'Taylor'である従業員の音声シグネチャを戻します。
Command> SELECT last_name, first_name, SOUNDEX (last_name) FROM employees where last_name = 'Taylor'; < Taylor, Jonathon, T460 > < Taylor, Winston, T460 > 2 rows found.
この関数を再度呼び出して、文字列'Tailor'の音声シグネチャを戻します。この関数の3回目の呼出しを行い、姓の音声が文字列'Tailor'に類似した各従業員の姓名を戻します。
Command> SELECT SOUNDEX ('Tailor') FROM dual; < T460 > 1 row found. Command> SELECT last_name, first_name FROM employees WHERE SOUNDEX (last_name) = SOUNDEX ('Tailor'); < Taylor, Jonathon > < Taylor, Winston > 2 rows found.
SQRT
SQRT
関数は、Expression
の平方根を戻します。
SQL構文
SQRT(Expression
)
パラメータ
SQRT
には、次のパラメータがあります。
パラメータ | 説明 |
---|---|
|
オペランドまたは列には、任意の数値データ型を指定できます。 |
説明
-
Expression
が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_character
FROMExpression
) -
TRIM
の修飾子の1つ(LEADING
、TRAILING
またはBOTH
)をTrim_character
なしで指定します。この場合、Trim_character
は空白にデフォルト設定されます。TRIM ( LEADING|TRAILING|BOTH FROM
Expression
) -
TRIM
の修飾子なしでTrim_character
を指定すると、先行および後続する両方のTrim_character
のインスタンスがExpression
から削除されます。TRIM (
Trim_character
FROMExpression
) -
修飾子や
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.