スカラ式

+
-

factor
(scalar-expression)

                             

scalar-expression scalar-operator scalar-expression

このドキュメントでは、次のトピックについて説明します。


スカラ式

scalar-expression は、ファクタまたはスカラ演算子を含む他のスカラ式で構成されます。

参照の優先順位に関して、スカラ式は次のように処理されます。

  • 非修飾変数名がスカラ式に指定されるとき、最初に変数名は参照テーブルの列名として解決されます。

  • 指定された名前の列が参照テーブルで有効でない場合、Natural はこの変数を Natural ユーザー定義変数(ホスト変数)として解決しようとします。

スカラ演算子

+

-
*
/

scalar-operator は、上記リストのいずれかの演算子です。マイナス(-)およびスラッシュ(/)の演算子を使用する場合は、先行する演算子との間を最低 1 つの空白で区切る必要があります。

ファクタ

atom
column-reference
aggregate-function
special-register

factor は、上図のいずれかの項目で構成されます。これらの項目について次に説明します。

原子

parameter
constant

 atom は、parameter または constant のいずれかです。

列参照

table-name
correlation-name

column-name

column-reference は、オプションで table-name または correlation-name(「基本構文項目」も参照)で修飾された列名です。修飾された名前は修飾されない名前よりも明確であり、ときには修飾が必要となります。

注意:
このような場合には、テーブル名を認可 ID で明示的に修飾しないでください。テーブル名を修飾するときは、代わりに相関名を使用してください。

table-name または correlation-name で列を参照する場合、列は対応するテーブル内に含まれている必要があります。table-namecorrelation-name も指定されていない場合、各列は FROM 節(「テーブル式」を参照)に指定されたテーブルのいずれかに存在している必要があります。

集積関数

COUNT

(*)
(DISTINCT column-reference)

 
 

AVG
MAX
MIN
SUM

(DISTINCT column-reference)
([ALL] scalar-expression)

 

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 を指定する場合、引数は単一の列名にする必要があります。DISTINCT を指定しない場合、引数は一般的な scalar-expression の構成にすることもできます。

DISTINCT は、重複値を削除せずにテーブルのすべての行をカウントする特別関数 COUNT(*) に指定することはできません。

タイムゾーン固有の式

time-zone-specific-expression

タイムゾーン値付きのタイムスタンプを指定します。AT LOCAL または AT TIME ZONE

AT LOCAL

function-invocation
(expression)
constant
column-name
variable
special-register
scalar-fullselect
case-expression
cast-specification

{AT LOCAL}

AT TIME ZONE

function-invocation
(expression)
constant
column-name
variable
special-register
scalar-fullselect
case-expression
cast-specification

{AT TIME ZONE}

function-invocation
(expression)
constant
column-name
variable
special-register
scalar-fullselect
case-expression
cast-specification

特別レジスタ

special-register

USER

special-register に対する参照はスカラ値を返します。

行値式

(scalar-expression,...)

row-value-expression は、1 つ以上の列値で構成される 1 つの行を返します。値は、式のリストとして指定できます。row-value-expression によって返される列の数は、式の数と等しくなります。row-value-expression は、複数の属性(数量DISTINCT比較 および IN)のオペランドとして使用できます。