SQL 関数 

関数とは、SQL99 コマンドセットにおける特殊な種類のコマンドワードのことです。基本的に、関数は一語のコマンドで、単一の値を返します。関数の値は、データベース値のリストから平均値を計算する関数のように、入力パラメータによって決定されます。ただし、現在のシステム時刻を返す CURRENT_TIME など、多くの関数では入力パラメータを使用しません。

SQL99 標準では、有用な関数が数多くサポートされています。本章では、これらの関数について詳しく説明し、使用例を示します。さらに、各データベースベンダーが提供している、SQL 標準には含まれない多数の内部関数についても、データベースごとにその一覧と説明を示します。

また、ほとんどのデータベースベンダーは、 ユーザー定義関数 (UDF) の作成もサポートしています。UDF の詳細については、第 3 章の CREATE FUNCTION コマンドの項を参照してください。

 
決定性関数と非決定性関数

関数は、決定性関数と非決定性関数に分類できます。 決定性関数は、入力値が同じであれば、常に同じ結果を返します。非決定性関数は、入力値が同じであっても、呼び出されるたびに異なる結果を返します。

両者の区別が重要なのは、ビュー、ユーザー定義関数、およびストアドプロシージャーでの関数の使い方に影響があるためです。適用される制限は実装によって異なりますが、これらのオブジェクトでは、その定義コード内で決定性関数しか使用できない場合があります。たとえば Microsoft SQL Server では、列式でインデックスを作成できますが、これは式に非決定性関数が含まれていない場合に限られます。これらの規則と制限はベンダーごとに異なります。関数を使用する際は、ベンダーのマニュアルを参照してください。