+ |
factor | ||||||||
- |
(scalar-expression) | ||||||||
scalar-expression | scalar-operator | scalar-expression |
このドキュメントでは、次のトピックについて説明します。
scalar-expression は、ファクタまたはスカラー演算子を含む他のスカラー式で構成されます。
参照の優先順位に関して、スカラー式は次のように処理されます。
非修飾変数名がスカラー式に指定されるとき、最初に変数名は参照テーブルの列名として解決されます。
指定された名前の列が参照テーブルで有効でない場合、Natural はこの変数を Natural ユーザー定義変数(ホスト変数)として解決しようとします。
+ |
||
- |
||
* |
||
/ |
||
| | |
||
CONCAT |
scalar-operator は上記のいずれかの演算子です。マイナス(-)およびスラッシュ(/)の演算子を使用する場合は、先行する演算子との間を最低 1 つの空白で区切る必要があります。
一般セットの構文:
atom | ||
column-reference | ||
aggregate-function | ||
special-register |
拡張セットの構文:
atom | ||
column-reference | ||
aggregate-function | ||
special-register | ||
スカラー関数 (スカラー式,) | ||
スカラー式の単位 | ||
CASE 式 | ||
CAST 式 | ||
ユーザー定義関数参照 | ||
シーケンス参照 |
factor は、上図のいずれかの項目で構成されます。これらの項目について次に説明します。
parameter | ||
constant |
atom は、parameter または constant です。「基本構文項目」も参照してください。
table-name . | column-name | ||
correlation-name |
column-reference は、オプションで table-name または correlation-name(「基本構文項目」も参照)で修飾された列名です。 修飾された名前は修飾されない名前よりも明確であり、ときには修飾が必要となります。
注意:
このような場合には、テーブル名を認可 ID で明示的に修飾しないでください。 テーブル名を修飾するときは、代わりに相関名を使用してください。
table-name または correlation-name で列を参照する場合、列は対応するテーブル内に含まれている必要があります。 table-name も correlation-name も指定されていない場合、各列は FROM
節に指定されたテーブルの 1 つに存在している必要があります。
一般セットの構文:
COUNT
|
(*) | ||||||
(DISTINCT column-reference)
|
|||||||
AVG |
|||||||
MAX |
(DISTINCT column-reference)
|
||||||
MIN |
([ALL ] scalar-expression)
|
||||||
SUM |
拡張セットの構文:
COUNT
|
(*) | ||||||
(DISTINCT column-reference)
|
|||||||
AVG |
|||||||
MAX |
|||||||
MIN |
|||||||
SUM |
|||||||
COUNT_BIG |
|||||||
STDDEV |
|||||||
STDDEV_POP
|
(DISTINCT column-reference)
|
||||||
STDDEV_SAMP
|
([ALL ] scalar-expression)
|
||||||
VAR |
|||||||
VAR_POP |
|||||||
VAR_SAMP |
|||||||
VARIANCE |
|||||||
VARIANCE_SAMP
|
SQL は基本的な取得機能拡張のために多くの特別関数を提供しています。 現在有効で Natural がサポートする、いわゆる SQL 集積関数は次のとおりです。
AVG | 列の平均値 |
---|---|
COUNT | 列の値の個数 |
MAX | 列の最大値 |
MIN | 列の最小値 |
SUM | 列の合計値 |
COUNT(*)
は別にして、上記の関数は引数(つまり、単一の列または scalar-expression)のスカラー値の集合を処理します。その結果としてスカラー値を生成します。
例:
DEFINE DATA LOCAL 1 AVGAGE (I2) END-DEFINE ... SELECT AVG (AGE) INTO AVGAGE FROM SQL-PERSONNEL ...
関数が適用される前に余分な重複値を削除するため、一般的に、引数の前にキーワード DISTINCT
をオプションで指定できます。
DISTINCT
を指定する場合、引数は単一の列名にする必要があります。DISTINCT
を指定しない場合、引数は一般的な scalar-expression の構成にすることもできます。
重複値を削除せずにテーブルのすべての行をカウントする特別関数 COUNT(*)
に DISTINCT
を指定することはできません。
一般セットの構文:
USER |
拡張セットの構文:
USER |
||
CURRENT TIMEZONE
|
||
CURRENT DATE
|
||
CURRENT TIME
|
||
CURRENT TIMESTAMP
|
||
CURRENT SQLID
|
||
CURRENT PACKAGESET
|
||
CURRENT SERVER
|
special-register に対する参照はスカラー値を返します。
USER
を除き、special-registers は標準 SQL には準拠しておらず、Natural SQL 拡張セットでのみサポートされています。
scalar-function は、スカラー計算式の構築に使用できる組み込み関数です。
Natural SQL 拡張セットでサポートされているスカラー関数の詳細については、『Natural for DB2』ドキュメントの「Natural SQL Statements - Syntactical Items」にある「scalar-function」を参照してください。
YEAR |
||
YEARS |
||
MONTH |
||
MONTHS |
||
DAY |
||
DAYS |
||
HOUR |
||
HOURS |
||
MINUTE |
||
MINUTES |
||
SECOND |
||
SECONDS |
||
MICROSECOND |
||
MICROSECONDS |
unit は標準 SQL には準拠しておらず、Natural SQL 拡張セットでのみサポートされています。
CASE |
searched-when-clause | ELSE |
NULL |
END |
||||||
simple-when-clause | scalar-expression |
case-expression は標準 SQL には準拠しておらず、Natural SQL 拡張セットでのみサポートされています。
WHEN search-conditionTHEN |
NULL |
||
scalar-expression |
検索 WHEN 節は標準 SQL には準拠しておらず、Natural SQL 拡張セットでのみサポートされています。
詳細については、search-condition を参照してください。
scalar-expression | WHEN scalar-expression THEN |
NULL |
|||
scalar-expression |
単純 WHEN 節は標準 SQL には準拠しておらず、Natural SQL 拡張セットでのみサポートされています。
CAST (scalar-expression AS data-type)
|
CAST 式は標準 SQL には準拠しておらず、Natural SQL 拡張セットでのみサポートされています。
オプション user-defined-function-reference は Natural SQL 拡張セットに含まれます。 このオプションでは、ユーザー定義関数を呼び出すことができます。 引数は角カッコ内にコンマで区切って指定する必要があります。 ユーザー定義関数はターゲット RDBMS で宣言する必要があります。
NEXT VALUE FOR sequence-name |
PREVIOUS VALUE FOR sequence-name |
オプション sequence-reference は Natural SQL 拡張セットに含まれます。
このオプションでは、シーケンスオブジェクトの次の値または前の値を参照できます。 シーケンスオブジェクトは、ランタイムに参照される前に、ターゲット RDBMS で作成する必要があります。
(fullselect) |
オプション scalar-fullselect は Natural SQL 拡張セットに含まれます。
式では、単一の列値で構成される単一行を返す scalar-fullselect(カッコで囲んだ fullselect)がサポートされています。 fullselect で行が返されない場合、式の結果は空値になります。 scalar-fullselect に対して複数の行が返される場合、エラーが発生します。