# CHAPTER 9: Expressions

## 9.1 はじめに

expression (expr)はコマンドではありません。これらはコマンド の一部として指定可能な式です。式は`SELECT`コマンド、`UPDATE` コマンド、WHERE句で指定できます。

Syntax

  `expr is:` | `|attr |string CONSTANT |number |(expr) |CONVERT expr [TO] data_type |CONVERT expr [TO] GENERIC data_type |expr CONVERT [TO] data_type |expr CONVERT [TO] GENERIC data_type |expr operator expr |expr operator |operator expr |built_in_function |user_defined_function |user_defined_aggregate_function |aggregate_function |math_library_function` | `| | | | | | | | | | | | | | | |`

注意

1. 可能な場合は常に、式の評価中で自動的なデータ型の変換が実行されます。

2. 式の結果をユーザ自身でデータ変換しない限り、その処理結果は 非パラメータ形式（いかなるフィールドにも関連付けされていない）のデータとなり ます。非パラメータ形式のデータについては、 データタイプの章で解説しています。

3. ユーザによるデータタイプの変換は、 Empress SQL: ユーザーズガイドで解説しています。

4. 日付演算の為の式は、 Empress SQL: ユーザーズガイドで解説しています。

5. 0による除算などのように、式を評価できない場合は、エラーメッセージを出力 します。

6. `演算子`は。Empress演算子です。利用可能な演算子は 次の章を参照してください。

7. Empressのファンクションは、以下のように分類できます。
   - 集計関数 (`aggregate_function`),
   - 組込み関数 (`built_in_function`),
   - 数学関数 (`math_library_function`),
   - ユーザ定義関数 (`user_defined_function`) and
   - ユーザ定義集計関数 (`user_defined_aggregate_function`).

   これらのファンクションに関しては、次の章で解説します。

   集計関数とは、`COUNT`,`MAX`,`MIN`, `SUM`,`AVG`です。

   以下に組込み関数示します。

   abs ( ) ceiling ( ) datenext ( ) floor ( ) is_decimal ( ) is_integer ( ) is_white ( ) | length ( ) lpad ( ) lscan ( ) ltrim ( ) nullval ( ) round ( ) | rpad ( ) rscan ( ) rstrindex ( ) rtrim ( ) sign ( ) strdel ( ) | strindex ( ) strins ( ) substr ( ) tolower ( ) toupper ( ) trunc ( )

   使用可能な数学関数は、システムに依存します。以下に示す関数のサブセット となります。

   acos asin atan atan2 ceil cos cosh erf erfc | expr fabs floor fmod frexp frexpman frexpexp gamma hypot | j0 j1 jn jdexp log log10 modf modffrac modfint | pow sin sinh sqrt tan tanh y0 y1 yn

   ユーザ定義関数とユーザ定義集計関数については、 Empress: ユーザ定義関数を参照 してください。

8. 集計関数は、`UPDATE`と`WHERE`句の式中では使用でき ません。

## 9.2 演算子

以下に有効なEmpress演算子を示します。

Table 9-1: Empress演算子

演算子 | 概要
`+` | 数値データの加算。
       SELECT numeric_attr1 + numeric_attr2 FROM table_name;
`-` | 数値データの減算。
`*` | 数値データの乗算。
`/` | 数値データの除算。
`%` | 数値データの除算後の余り。
       SELECT numeric_attr1 % numeric_attr2 FROM table_name;
`concat` | 文字データの連結。
       SELECT char_attr1 CONCAT char_attr2 FROM table_name;

       SELECT char_attr1 CONCAT " - " CONCAT char_attr2 FROM table_name;
`day`(`s`) | `DATE`/`TIME`/`MICROTIMESTAMP`の算術。
       SELECT date_attribute + 3 DAYS FROM table_name;

       SELECT date_attribute - 3 DAYS FROM table_name;
`dayof` | `DATE`/`TIME`/`MICROTIMESTAMP`データタイプの日。
`week`(`s`) | `DATE`/`TIME`/`MICROTIMESTAMP`の算術。
`month`(`s`) | `DATE`/`TIME`/`MICROTIMESTAMP`の算術。
`monthof` | `DATE`/`TIME`/`MICROTIMESTAMP`データタイプの月。
`year`(`s`) | `DATE`/`TIME`/`MICROTIMESTAMP`の算術。
`yearof` | `DATE`/`TIME`/`MICROTIMESTAMP`データタイプの年。
`hour`(`s`) | `DATE`/`TIME`/`MICROTIMESTAMP`の算術。
`hourof` | `TIME`/`MICROTIMESTAMP`データタイプの時間。
`minute`(`s`) | `DATE`/`TIME`/`MICROTIMESTAMP`の算術。
`minuteof` | `TIME`/`MICROTIMESTAMP`データタイプの分。
`second`(`s`) | `DATE`/`TIME`/`MICROTIMESTAMP`の算術。
`secondof` | `TIME`/`MICROTIMESTAMP`データタイプの秒。
`weekofyear` | 週数。0-53の範囲。
`dayname` | 0-6の曜日に対応した名前。
`dayofweek` | `DATE`/`TIME`/`MICROTIMESTAMP`データタイプの曜日に 対応する整数。
`dayofyear` | `DATE`/`TIME`/`MICROTIMESTAMP`データタイプの日付に 対応する整数。

詳しくは、Empress: SQL ユーザーズガイドの 日付算術を参照して ください。