函数

来源:互联网 发布:北京mba学校排名知乎 编辑:程序博客网 时间:2024/03/29 20:01

函数

Transact-SQL 编程语言提供三种函数:

  • 行集函数

    可以像 SQL 语句中表引用一样使用。有关这些函数的列表的更多信息,请参见行集函数。

  • 聚合函数

    对一组值操作,但返回单一的汇总值。有关这些函数的列表的更多信息,请参见聚合函数。

  • 标量函数

    对单一值操作,返回单一值。只要表达式有效即可使用标量函数。下表列出了标量函数的分类。

    函数分类 解释 配置函数 返回当前配置信息。 游标函数 返回游标信息。 日期和时间函数 对日期和时间输入值执行操作,返回一个字符串、数字或日期和时间值。 数学函数 对作为函数参数提供的输入值执行计算,返回一个数字值。 元数据函数 返回有关数据库和数据库对象的信息。 安全函数 返回有关用户和角色的信息。 字符串函数 对字符串(charvarchar)输入值执行操作,返回一个字符串或数字值。 系统函数 执行操作并返回有关 Microsoft® SQL Server™ 中的值、对象和设置的信息。 系统统计函数 返回系统的统计信息。 文本和图像函数 对文本或图像输入值或列执行操作,返回有关这些值的信息。
函数确定性

SQL Server 2000 的内置函数可以是确定的也可以是不确定的。如果任何时候用一组特定的输入值调用内置函数,返回的结果总是相同的,则这些内置函数为确定的。如果每次调用内置函数时即使用的是相同的一组特定输入值,返回的结果不总是相同的,则这些内置函数为不确定的。

函数的确定性将规定函数是否可用在索引计算列和索引视图中。索引扫描必须始终生成一致的结果。因而,只有确定性函数才能用来定义将编制索引的计算列和视图。

配置、游标、元数据、安全和系统统计函数不具有确定性。此外,下列内置函数也始终为不确定的:

@@ERROR FORMATMESSAGE NEWID IDENTITY GETANSINULL PERMISSIONS @@ROWCOUNT GETDATE SESSION_USER @@TRANCOUNT HOST_ID STATS_DATE APP_NAME HOST_NAME SYSTEM_USER CURRENT_TIMESTAMP IDENT_INCR TEXTPTR CURRENT_USER IDENT_SEED TEXTVALID DATENAME IDENTITY USER_NAME
函数排序规则

使用字符串输入并返回字符串输出的函数对输出使用输入字符串的排序规则。

使用非字符输入并返回字符串的函数对输出使用当前数据库的默认排序规则。

使用多个字符串输入并返回字符串的函数,使用排序规则的优先顺序规则设置输出字符串的排序规则。有关更多信息,请参见排序规则的优先顺序。

 

请参见

 

CREATE FUNCTION

确定性函数和非确定性函数

用户定义函数

 

配置函数

这些标量函数返回当前配置选项设置的信息。

@@DATEFIRST @@OPTIONS @@DBTS @@REMSERVER @@LANGID @@SERVERNAME @@LANGUAGE @@SERVICENAME @@LOCK_TIMEOUT @@SPID @@MAX_CONNECTIONS @@TEXTSIZE @@MAX_PRECISION @@VERSION @@NESTLEVEL  

所有配置函数都不具有确定性。每次用一组特定输入值调用它们时,返回的结果不总是相同的。有关函数确定性的更多信息,请参见确定性函数和非确定性函数。

 

 

游标函数

这些标量函数返回有关游标的信息。

@@CURSOR_ROWS

CURSOR_STATUS

@@FETCH_STATUS

所有游标函数都不具有确定性。每次用一组特定输入值调用它们时,返回的结果不总是相同的。有关函数确定性的更多信息,请参见确定性函数和非确定性函数。

 

日期和时间函数

这些标量函数对日期和时间输入值执行操作,并返回一个字符串、数字值或日期和时间值。

下表列出日期和时间函数以及它们的确定性属性。有关函数确定性的更多信息,请参见确定性函数和非确定性函数。

函数 确定性 DATEADD 具有确定性 DATEDIFF 具有确定性 DATENAME 不具有确定性 DATEPART 除了用作 DATEPART (dw, date) 外都具有确定性。dw 是工作日的日期部分,取决于由设置每周第一天的 SET DATEFIRST 所设置的值。 DAY 具有确定性 GETDATE 不具有确定性 GETUTCDATE 不具有确定性 MONTH 具有确定性 YEAR 具有确定性

字符串函数

这些标量函数对字符串输入值执行操作,返回字符串或数字值。

ASCII NCHAR SOUNDEX CHAR PATINDEX SPACE CHARINDEX REPLACE STR DIFFERENCE QUOTENAME STUFF LEFT REPLICATE SUBSTRING LEN REVERSE UNICODE LOWER RIGHT UPPER LTRIM RTRIM  

除 CHARINDEX 和 PATINDEX 外的所有其它内置字符串函数都具有确定性。每次用一组给定的输入值调用它们时,都返回相同的值。有关函数确定性的更多信息,请参见确定性函数和非确定性函数。

 

数学函数

这些标量函数通常对作为参数提供的输入值执行计算,并返回一个数字值。

ABS DEGREES RAND ACOS EXP ROUND ASIN FLOOR SIGN ATAN LOG SIN ATN2 LOG10 SQUARE CEILING PI SQRT COS POWER TAN COT RADIANS  

说明  算术函数(例如 ABS、CEILING、DEGREES、FLOOR、POWER、RADIANS 和 SIGN)返回与输入值相同数据类型的值。三角函数和其它函数(包括 EXP、LOG、LOG10、SQUARE 和 SQRT)将输入值投影到 float 并返回 float 值。

 

除了 RAND 外,所有数学函数都是确定性函数。每次用一组特定输入值调用它们时,所返回的结果相同。仅当指定种子参数时,RAND 才具有确定性。有关函数确定性的更多信息,请参见确定性函数和非确定性函数。

元数据函数

这些标量函数返回有关数据库和数据库对象的信息。

COL_LENGTH fn_listextendedproperty COL_NAME FULLTEXTCATALOGPROPERTY COLUMNPROPERTY FULLTEXTSERVICEPROPERTY DATABASEPROPERTY INDEX_COL DATABASEPROPERTYEX INDEXKEY_PROPERTY DB_ID INDEXPROPERTY DB_NAME OBJECT_ID FILE_ID OBJECT_NAME FILE_NAME OBJECTPROPERTY FILEGROUP_ID @@PROCID FILEGROUP_NAME SQL_VARIANT_PROPERTY FILEGROUPPROPERTY TYPEPROPERTY FILEPROPERTY  

所有元数据函数都具有不确定性。每次用一组特定的输入值调用它们时,所返回的结果不总是相同。有关函数确定性的更多信息,请参见确定性函数和非确定性函数。

 

安全函数

这些安全函数返回有关用户和角色的信息。

fn_trace_geteventinfo IS_SRVROLEMEMBER fn_trace_getfilterinfo SUSER_SID fn_trace_getinfo SUSER_SNAME fn_trace_gettable USER_ID HAS_DBACCESS USER IS_MEMBER  

所有的安全函数都具有不确定性。每次用一组特定的输入值调用它们时,所返回的结果不总是相同。有关函数确定性的更多信息,请参见确定性函数和非确定性函数。

 

系统函数

这些标量函数对 Microsoft® SQL Server™ 中的值、对象和设置进行操作并返回有关信息。

下表列出系统函数及其确定性属性。有关函数确定性的更多信息,请参见确定性函数和非确定性函数。

函数 确定性 APP_NAME 不具有确定性 CASE 表达式 具有确定性 CAST 和 CONVERT 除非与 datetimesmalldatetimesql_variant 一起使用,其它时候都具有确定性。 COALESCE 具有确定性 COLLATIONPROPERTY 不具有确定性 CURRENT_TIMESTAMP 不具有确定性 CURRENT_USER 不具有确定性 DATALENGTH 具有确定性 @@ERROR 不具有确定性 fn_helpcollations 具有确定性 fn_servershareddrives 不具有确定性 fn_virtualfilestats 不具有确定性 FORMATMESSAGE 不具有确定性 GETANSINULL 不具有确定性 HOST_ID 不具有确定性 HOST_NAME 不具有确定性 IDENT_CURRENT 不具有确定性 IDENT_INCR 不具有确定性 IDENT_SEED 不具有确定性 @@IDENTITY 不具有确定性 IDENTITY(函数) 不具有确定性 ISDATE 只有与 CONVERT 函数一起使用,指定 CONVERT 样式参数且样式参数不等于 0、100、9 或 109 时才具有确定性。样式 0 和 100 使用默认格式 mon dd yyyy hh:miAM(或 PM)。样式 9 和 109 使用默认格式加毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM)。 ISNULL 具有确定性 ISNUMERIC 具有确定性 NEWID 不具有确定性 NULLIF 具有确定性 PARSENAME 具有确定性 PERMISSIONS 不具有确定性 @@ROWCOUNT 不具有确定性 ROWCOUNT_BIG 不具有确定性 SCOPE_IDENTITY 不具有确定性 SERVERPROPERTY 不具有确定性 SESSIONPROPERTY 不具有确定性 SESSION_USER 不具有确定性 STATS_DATE 不具有确定性 SYSTEM_USER 不具有确定性 @@TRANCOUNT 不具有确定性 USER_NAME 不具有确定性

系统统计函数

这些标量函数返回系统的统计信息。

@@CONNECTIONS @@PACK_RECEIVED @@CPU_BUSY @@PACK_SENT fn_virtualfilestats @@TIMETICKS @@IDLE @@TOTAL_ERRORS @@IO_BUSY @@TOTAL_READ @@PACKET_ERRORS @@TOTAL_WRITE

所有系统统计函数都不具有确定性。每次用一组特定的输入值调用它们时,所返回的结果不总是相同。有关函数确定性的更多信息,请参见确定性函数和非确定性函数。

 

文本和图像函数

这些标量函数对文本或图像输入值或列执行操作,返回有关这些值的信息。

PATINDEX

TEXTPTR

TEXTVALID

这些文本和图像函数都是不确定性函数,每次调用它们时,即使是用相同的一组输入值,也可能返回不同的结果。有关函数确定性的更多信息,请参见确定性函数和非确定性函数。