函数
来源:互联网 发布:北京mba学校排名知乎 编辑:程序博客网 时间:2024/03/29 20:01
函数
Transact-SQL 编程语言提供三种函数:
- 行集函数
可以像 SQL 语句中表引用一样使用。有关这些函数的列表的更多信息,请参见行集函数。
- 聚合函数
对一组值操作,但返回单一的汇总值。有关这些函数的列表的更多信息,请参见聚合函数。
- 标量函数
对单一值操作,返回单一值。只要表达式有效即可使用标量函数。下表列出了标量函数的分类。
函数分类 解释 配置函数 返回当前配置信息。 游标函数 返回游标信息。 日期和时间函数 对日期和时间输入值执行操作,返回一个字符串、数字或日期和时间值。 数学函数 对作为函数参数提供的输入值执行计算,返回一个数字值。 元数据函数 返回有关数据库和数据库对象的信息。 安全函数 返回有关用户和角色的信息。 字符串函数 对字符串(char 或 varchar)输入值执行操作,返回一个字符串或数字值。 系统函数 执行操作并返回有关 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
所有游标函数都不具有确定性。每次用一组特定输入值调用它们时,返回的结果不总是相同的。有关函数确定性的更多信息,请参见确定性函数和非确定性函数。
日期和时间函数
这些标量函数对日期和时间输入值执行操作,并返回一个字符串、数字值或日期和时间值。
下表列出日期和时间函数以及它们的确定性属性。有关函数确定性的更多信息,请参见确定性函数和非确定性函数。
字符串函数
这些标量函数对字符串输入值执行操作,返回字符串或数字值。
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™ 中的值、对象和设置进行操作并返回有关信息。
下表列出系统函数及其确定性属性。有关函数确定性的更多信息,请参见确定性函数和非确定性函数。
系统统计函数
这些标量函数返回系统的统计信息。
@@CONNECTIONS @@PACK_RECEIVED @@CPU_BUSY @@PACK_SENT fn_virtualfilestats @@TIMETICKS @@IDLE @@TOTAL_ERRORS @@IO_BUSY @@TOTAL_READ @@PACKET_ERRORS @@TOTAL_WRITE
所有系统统计函数都不具有确定性。每次用一组特定的输入值调用它们时,所返回的结果不总是相同。有关函数确定性的更多信息,请参见确定性函数和非确定性函数。
文本和图像函数
这些标量函数对文本或图像输入值或列执行操作,返回有关这些值的信息。
PATINDEX
TEXTPTR
TEXTVALID
这些文本和图像函数都是不确定性函数,每次调用它们时,即使是用相同的一组输入值,也可能返回不同的结果。有关函数确定性的更多信息,请参见确定性函数和非确定性函数。