Share via


使用系統函數

系統函數可讓您存取 SQL Server 系統資料表中的資訊,但不直接存取系統資料表。

有些 Transact-SQL 系統函數的名稱是以兩個 @@ 符號開始。雖然在舊版 SQL Server 中,@@ 函數是當作全域變數,但它們並不是變數,行為模式也和變數不一樣。@@ 函數是系統函數,他們的語法是遵照函數的規則。

在以下五對有關資料庫、主機、物件、登入與使用者的系統函數中,每對函數都會在提供識別碼 (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

例如,若要取得資料庫識別碼,請使用 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 可能擁有完全不同的系統資料表。