1.3. 値式

値式は、例えばSELECTコマンドのターゲットリストとして、 INSERT或いはUPDATE の新しいカラム値として,もしくはいくつかのコマンドの検索条件 として様々な文脈のなかで使われます。値式の結果は、テーブル式の結果 (つまりテーブルです)から区別するために時として スカラーと呼ばれます。したがって、値式は スカラー式(もしくはもっと簡単に )とも呼ばれます。式の構文は、 算術、論理、集合、そして他の演算を使った初期の部分からの値の計算 を許します。

値式は下記のうちのどれかです。

このリストに加えて、式として分類されるけれども一般的な構文ルール には従わないいくつかの構成要素があります。これらは一般的に 関数あるいは演算子の意味を持ち、Chapter 4の相応する部分で説明されています。例として IS NULLがあります。

Section 1.1.2ですでに定数については 説明しました。続く節では残りのオプションについて説明します。

1.3.1. カラムの参照

カラムは下記のような形式で参照することができます。

相関名.カラム名 
`['配列要素`]'
 
相関名はテーブル名、FROM 句で 定義されたテーブルの別名、もしくはキーワード NEWOLDのいずれかです。 (NEW と OLD はルールのアクション部分でしか使えませんが、 他の相関係数名はどの SQL 文でも使うことができます。) 相関係数名は、もしカラム名が現在の問い合わせで使われる全ての テーブルを通して一意である場合は省略しても構いません。もし カラムが配列型だった場合、オプション の配列要素が特定の要素を配列から 選択します。もし配列要素が提供されない場合、配列全体が 選択されます。それぞれの場合の許可される構文は PostgreSQL リファレンスマニュアル の特定のコマンドの説明を見て下さい。

1.3.2. 位置パラメータ

位置パラメータの参照は SQL 関数のパラメータを示すために使われます。 これは典型的に SQL 関数定義ステートメントで使われます。 パラメータの形式は以下です。

$数字

例えば、関数deptの定義が以下のように されたとします。

CREATE FUNCTION dept (text) RETURNS dept
  AS 'select * from dept where name = $1'
  LANGUAGE 'sql';
ここでは$1は関数が呼び出されるときに 最初の関数引数によって置き換えられます。

1.3.3. 関数呼び出し

関数呼び出しの構文は関数名(これはSection 1.1.1の識別子の構文ルールの対象です) のあとに括弧で閉じた引数リストがあるものです。


関数 ([ 
[,  ... ]] )

例えば、下記は 2 の平方根を計算します。

sqrt(2)

組み込み関数のリストはChapter 4にあります。 他の関数はユーザによって追加できます。

1.3.4. 集計式

集計式は、問い合わせによって選択される 行にある集計関数のアプリケーションを表します。集計関数は、 例えば入力の合計や平均などのように、複数の入力を単一の出力値にします。 集計式の構文は下記のうちのいずれかです。

aggregate_name (expression)
aggregate_name (ALL expression)
aggregate_name (DISTINCT expression)
aggregate_name ( * )

aggregate_nameは前もって定義された 集計で、expressionは それ自体は集計式を含まない式です。

集計式の最初の形式は、与えられた式が非 NULL 値を生み出す全ての 入力行で、集計を呼び出します。(実際は、NULL を無視するかどうかは 集計関数しだいですが、全ての標準のものは無視します。) 二番目の形式はALLがデフォルトなので 最初のものと同じです。三番目の形式は、入力行の中で見つけられる 式の全ての別個の非 NULL 値のための集計を呼び出します。 最後の形式は NULL か非 NULL 値かに関わらず、それぞれの入力行 に対して一回ずつ集計を呼び出します。特定の入力値が指定されていないため 、これは一般的にcount()集計関数でのみ 役に立ちます。

例えば、count(*)は入力行の合計数を出します。 count(f1)f1が非 NULL である 入力行の数を出します。count(distinct f1)f1の別個の非 NULL 値の数を出します。

既に定義された集計関数はSection 4.12で説明されています。他の集計関数 はユーザによって追加することができます。