ODBC スカラ関数 (Transact-SQL)

Transact-SQL ステートメントでは、ODBC スカラ関数を使用できます。これらのステートメントは、SQL Server によって解釈されます。具体的には、ストアド プロシージャやユーザー定義関数の中で、文字列、数値、時刻、日付、間隔を扱う関数のほか、システム関数を使用することができます。

使用法

SELECT {fn <function_name> [ (<argument>,....n) ] }

関数

次の表は、同等の機能が Transact-SQL に存在しない ODBC スカラ関数をまとめたものです。

文字列関数

関数

説明

BIT_LENGTH( string_exp ) (ODBC 3.0)

文字列式の長さ (ビット単位) を返します。

引数は文字列データ型に限定されません。そのため、string_exp から文字列型への暗黙的な変換は実行されず、指定されたデータ型の (内部的な) サイズを返します。

CONCAT( string_exp1,string_exp2) (ODBC 1.0)

string_exp1 に対して string_exp2 を連結した結果の文字列を返します。結果の文字列は DBMS に依存します。たとえば、string_exp1 に指定された列に NULL 値が格納されていた場合、DB2 では NULL が返されますが、SQL Server では非 NULL 文字列が返されます。

OCTET_LENGTH( string_exp ) (ODBC 3.0)

文字列式の長さ (バイト単位) を返します。結果は、ビット数を 8 で割った値以上の最小の整数になります。

引数は文字列データ型に限定されません。そのため、string_exp から文字列型への暗黙的な変換は実行されず、指定されたデータ型の (内部的な) サイズを返します。

数値関数

関数

説明

TRUNCATE( numeric_exp, integer_exp) (ODBC 2.0)

numeric_exp を、小数点の右側の integer_exp 桁までに切り詰めて返します。integer_exp に負数を指定した場合、numeric_exp は、小数点の左側 |integer_exp| 桁に切り詰められます。

時刻、日付、および間隔を扱う関数

関数

説明

CURRENT_DATE( ) (ODBC 3.0)

現在の日付を返します。

CURRENT_TIME[( time-precision )] (ODBC 3.0)

現在のローカル時間を返します。time-precision 引数には、取得する値の秒の有効桁数を指定します。

DAYNAME( date_exp ) (ODBC 2.0)

date_exp の日の部分について、データ ソース固有の曜日名を表す文字列を返します (例 : 英語を使ったデータ ソースの場合は Sunday ~ Saturday または Sun. ~ Sat.、ドイツ語を使ったデータ ソースの場合は Sonntag ~ Samstag など)。

DAYOFMONTH( date_exp ) (ODBC 1.0)

date_exp の月部分に基づき、月初から数えた日を 1 ~ 31 の整数値として返します。

DAYOFWEEK( date_exp ) (ODBC 1.0)

date_exp の週部分に基づき、週の初めから数えた曜日を 1 ~ 7 の整数値として返します。1 は日曜日を表します。

HOUR( time_exp ) (ODBC 1.0)

time_exp の時部分に基づき、対応する時刻を 0 ~ 23 の整数値として返します。

MINUTE( time_exp ) (ODBC 1.0)

time_exp の分部分に基づき、対応する分を 0 ~ 59 の整数値として返します。

MONTHNAME( date_exp ) (ODBC 2.0)

date_exp の月の部分について、データ ソース固有の月名を表す文字列を返します (例 : 英語を使ったデータ ソースの場合は January ~ December または Jan. ~ Dec.、ドイツ語を使ったデータ ソースの場合は Januar ~ Dezember など)。

QUARTER( date_exp ) (ODBC 1.0)

date_exp の四半期を 1 ~ 4 の整数値として返します。1 は、1 月 1 日~3 月 31 日を表します。

WEEK( date_exp ) (ODBC 1.0)

date_exp の週部分に基づき、年頭から数えた週を 1 ~ 53 の整数値として返します。

A. ODBC 関数をストアド プロシージャで使用する

次の例では、ODBC 関数をストアド プロシージャで使用しています。

CREATE PROCEDURE dbo.ODBCprocedure
    (
    @string_exp nvarchar(4000)
    )
AS
SELECT {fn OCTET_LENGTH( @string_exp )};

B. ODBC 関数をユーザー定義関数で使用する

次の例では、ODBC 関数をユーザー定義関数で使用しています。

CREATE FUNCTION dbo.ODBCudf
    (
    @string_exp nvarchar(4000)
    )
RETURNS int
AS
BEGIN
DECLARE @len int
SET @len = (SELECT {fn OCTET_LENGTH( @string_exp )})
RETURN(@len)
END ;

SELECT dbo.ODBCudf('Returns the length.');
--Returns 38

C. ODBC 関数を SELECT ステートメントで使用する

次の SELECT ステートメントでは、ODBC 関数が使用されています。

DECLARE @string_exp nvarchar(4000) = 'Returns the length.';
SELECT {fn BIT_LENGTH( @string_exp )};
-- Returns 304
SELECT {fn OCTET_LENGTH( @string_exp )};
-- Returns 38

SELECT {fn CONCAT( 'CONCAT ','returns a character string')};
-- Returns CONCAT returns a character string
SELECT {fn TRUNCATE( 100.123456, 4)};
-- Returns 100.123400
SELECT {fn CURRENT_DATE( )};
-- Returns 2007-04-20
SELECT {fn CURRENT_TIME(6)};
-- Returns 10:27:11.973000

DECLARE @date_exp nvarchar(30) = '2007-04-21 01:01:01.1234567';
SELECT {fn DAYNAME( @date_exp )};
-- Returns Saturday
SELECT {fn DAYOFMONTH( @date_exp )};
-- Returns 21
SELECT {fn DAYOFWEEK( @date_exp )};
-- Returns 7
SELECT {fn HOUR( @date_exp)};
-- Returns 1 
SELECT {fn MINUTE( @date_exp )};
-- Returns 1
SELECT {fn MONTHNAME( @date_exp )};
-- Returns April
SELECT {fn QUARTER( @date_exp )};
-- Returns 2
SELECT {fn WEEK( @date_exp )};
-- Returns 16

関連項目

参照