使用系统函数

系统函数使您可以访问 SQL Server 系统表中的信息,而不必直接访问系统表。

某些 Transact-SQL 系统函数的名称以两个 at 符号 (@@) 开头。虽然在 SQL Server 的早期版本中,@@function 被作为全局变量,但它们并不是变量,而且其功能与变量的功能不同。@@function 是系统函数,并且其语法的使用遵循函数的规则。

用于数据库、主机、对象、登录名和用户的下列每对系统函数在给定标识符 (ID) 时返回名称,在给定名称时返回 ID:

  • DB_ID 和 DB_NAME

  • HOST_ID 和 HOST_NAME

  • OBJECT_ID 和 OBJECT_NAME

  • SUSER_ID 和 SUSER_NAME(或 SUSER_SID 和 SUSER_SNAME)

  • USER_ID 和 USER_NAME

例如,若要获得数据库 ID 号,请使用 DB_ID 函数,而不用执行 sysobjects 表的 SELECT 语句。

下面的示例说明如何检索使用 SQL Server 身份验证登录的当前用户的用户名:

SELECT SUSER_NAME();

下列函数与此类似,但它们不是成对出现的,而且带有的输入参数不止一个:

  • COL_LENGTH

    返回列长度,而不是该列中存储的任何单个字符串的长度。使用 DATALENGTH 函数可以确定特定值中的字符总数。

    下面的示例返回 Employees 表中 LastName 列的列长度和数据长度:

    SELECT COL_LENGTH('Employees', 'LastName') AS Col_Length, 
       DATALENGTH(LastName) AS DataLength
    FROM Employees
    WHERE EmployeeID > 6;
    
  • COL_NAME

    返回列名称。

  • INDEX_COL

    返回索引列名称。

我们建议您使用系统函数、信息架构视图或系统存储过程来获得系统信息,而不要直接查询系统表,因为不同版本 SQL Server 的系统表可能会有极大的不同。