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_exp2 连接到 string_exp1 的结果的字符串。生成的字符串依赖于 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)  | 
返回截断到小数点右侧 integer_exp 位置的 numeric_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. 在 SELECT 语句中使用 ODBC 函数
下面的 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