次の方法で共有


ODBC スカラー関数 (Transact-SQL)

Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric の SQL 分析エンドポイント Microsoft Fabric のウェアハウス

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) 現在の日付を返します。
CURDATE( ) (ODBC 3.0) 現在の日付を返します。
CURRENT_TIME[( time-precision )] (ODBC 3.0) 現在のローカル時間を返します。 time-precision 引数には、返される値の秒の有効桁数を指定します
CURTIME() (ODBC 3.0) 現在のローカル時間を返します。
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 の整数値として返します。
SECOND( 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 ;  
GO
SELECT dbo.ODBCudf('Returns the length.');  
--Returns 38  

注意

Microsoft Fabric では、ODBC スカラー関数はサポートされていますが、現在、例 B で示すように、値を返すユーザー定義関数はサポートされていません。

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 SECOND( @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  

例: Azure Synapse Analytics、Analytics Platform System (PDW)

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

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

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

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

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

CREATE FUNCTION dbo.ODBCudf  
(  
    @string_exp NVARCHAR(4000)  
)  
RETURNS INT  
AS  
BEGIN  
DECLARE @len INT  
SET @len = (SELECT {fn BIT_LENGTH( @string_exp )})  
RETURN(@len)  
END ;  
GO
SELECT dbo.ODBCudf('Returns the length in bits.');  
--Returns 432  

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

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

DECLARE @string_exp NVARCHAR(4000) = 'Returns the length.';  
SELECT {fn BIT_LENGTH( @string_exp )};  
-- Returns 304  
  
SELECT {fn CONCAT( 'CONCAT ','returns a character string')};  
-- Returns CONCAT returns a character string  
SELECT {fn CURRENT_DATE( )};  
-- Returns today's date  
SELECT {fn CURRENT_TIME(6)};  
-- Returns the time  
  
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 SECOND( @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  

参照

組み込み関数 (Transact-SQL)