式の関数

更新 : 2007 年 11 月

関数とは、ユーザーが使用できるあらかじめ用意された処理手続きです。データベース管理システムには基本関数が用意されています。独自のユーザー定義関数を作成することもできます。

式を構築するときには、次のような関数を呼び出すことができます。

  • 文字列 (文字) 関数

  • 日付関数

  • 数値関数

  • システム関数

  • その他の関数 (データ型を変換する関数など)

  • ユーザー定義関数

一般に、データベースで使用できる関数についてよくわかっている場合は、そのデータベースでサポートされている関数名および構文を使用できます。ビュー、ストアド プロシージャ、トリガを作成する場合などは、データベース固有の関数名および構文を使用する必要があります。

クエリおよびビュー デザイナは、次のように関数の使用を支援します。

  • 関数の引数に正しく引用符を挿入する。

  • 引数のデータ型の妥当性をチェックする。

  • 戻り値のデータ型の妥当性をチェックする。

データベースでサポートされる関数の詳細については、データベースのドキュメントを参照してください。

0fasyf1c.alert_note(ja-jp,VS.90).gifメモ :

データを要約するクエリを作成する場合は、特殊な関数のセットとして SUM( ) や AVG( ) などの集計関数を使用できます。詳細については、「クエリ結果の集計」を参照してください。

文字列関数

文字列を操作するための次の関数には、多くのデータベースで使用できる関数のサンプルが用意されています。

関数

説明

LCASE( )*、LOWER( )

文字列を小文字に変換します。

最初の文字を大文字に変換するには、次の関数を使用します。

  • SELECT UPPER(substring(lname, 1, 1))

残りの文字を小文字に変換するには、次の関数を使用します。

  • LOWER(substring (lname, 2, 99))

FROM employee

姓の頭文字を大文字、残りの文字を小文字に変換して表示します。

LTRIM( )

文字列の先頭のスペースを削除します。

SELECT stor_name, LTRIM(stor_address)
FROM stores

アドレス列の先頭から不要なスペースを削除して表示します。

SUBSTRING( )

文字列から 1 つ以上の文字を抽出します。

SELECT SUBSTRING(phone,1,3)
FROM employee

電話番号の最初の 3 文字 (市外局番) を表示します。

UCASE( )*、UPPER( )

文字列を大文字に変換します。

SELECT * FROM employee
WHERE UPPER(lname) = 'SMITH'

lname 列の内容を大文字に変換してから特定の値と比較して、検索で大文字小文字が区別される場合に不一致と見なされるのを防ぎます。

*   ODBC 関数を呼び出す場合は、{ fn LCASE(text) } のような構文を使用します。

日付関数

次の関数 (または同様の関数) は、多くのデータベースで使用できます。

関数

説明

DATEDIFF( )

2 つの日付の間隔を計算します。

SELECT fname, lname, hire_date
FROM employee
WHERE DATEDIFF(year, hire_date, getdate()) > 5

雇用されてから 5 年を超える従業員をすべて検索します。

DATEPART( )

日、月、年など、日付列または datetime 列の特定の部分を返します。

SELECT DATEPART(year, hire_date)
FROM employee

従業員が雇用された日付の年だけ (完全な日付でなく) を表示します。

CURDATE( )*、GETDATE( )、または DATE( )

現在の日付を datetime 形式で返します。この関数は、今日からの前後の間隔を計算する関数など、ほかの多くの日付関数の入力内容として利用できます。

SELECT order_id
FROM orders
WHERE order_date = GETDATE()
Displays orders placed today.

数値関数

ほとんどのデータベースには、計算を実行するときに使用できるいくつかの数値関数が用意されています。次の関数は、多くのデータベースで使用できる一般的な関数です。

0fasyf1c.alert_note(ja-jp,VS.90).gifメモ :

レポートで平均や合計を求める場合は、集計関数 AVG( )、COUNT( )、MAX( )、MIN( )、および SUM( ) を使用できます。

関数

説明

ROUND( )

数値を指定された小数点以下の桁数に丸めます。

SELECT ROUND(qty * (price * discount), 2)
FROM sales

割り引きに基づいた合計価格を表示し、結果を小数点以下第 2 位までに丸めます。

FLOOR( )

数値を最も近い (最小の) 整数に切り捨てます。

UPDATE titles
SET price = FLOOR(price)

titles テーブルのすべての価格を最も近い整数に切り捨てます。

CEILING( )

数値を最も近い整数に切り上げます。

INSERT INTO archivetitle
SELECT title, CEILING(price)
FROM titles

titles テーブルの title と (最も近い整数に切り上げた) price を archivetitle テーブルにコピーします。

システム関数

ほとんどのデータベースでは、現在のデータベース、現在のユーザー、またはサーバーに関する情報を返す特別な関数を使用できます。次の関数は、多くのデータベースで使用できる一般的な関数です。

関数

説明

DATALENGTH( )

指定された式によって使用されるバイト数を返します。

SELECT DATALENGTH(au_lname)
FROM authors

姓と名に必要なバイト数を表示します。

USER( )*、USER_NAME( )

現在のユーザー名を返します。

SELECT company_name, city, phone
FROM customers
WHERE salesperson = USER_NAME()

クエリを実行した販売員に対する顧客のリストを作成します。

その他の関数

これまでに示した関数に加えて、一部のデータベースには、クエリの作成に役立つそれ以外の関数も用意されています。これには、データ型変換関数やその他のユーティリティ関数が含まれます。次の関数は、多くのデータベースで使用できるユーティリティ関数の種類を示しています。

関数

説明

CONVERT( )

データをあるデータ型から別のデータ型に変換します。データの書式を設定する場合や、データ列の内容を異なるデータ型を要求する関数の引数として使用する場合に役立ちます。

SELECT 'Hired: ' + CONVERT(char (11),
  hire_date)
FROM employee

日付の前にキャプションを付けて表示します。CONVERT( ) 関数は日付から文字列を作成して、リテラル文字列と連結できるようにします。

SOUNDEX( )

指定された式の Soundex コードを返します。このコードを使用して、"似たような" 型の検索を作成できます。

SELECT au_lname, au_fname
FROM authors
WHERE SOUNDEX(au_fname) = 'M240'

"Michael" と似たような名前を検索します。

STR( )

数値データを文字列に変換して、文字列演算子で操作できるようにします。

SELECT str(job_id)
FROM employee

job_id 列を単一の文字列として表示します。

参照

概念

クエリでの式の使用

参照

式の構造

その他の技術情報

パラメータを使用したクエリの作成