使用系統函數
系統函數可讓您存取 SQL Server 2005 系統資料表中的資訊,但不直接存取系統資料表。
有些 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 可能擁有完全不同的系統資料表。
請參閱
概念
其他資源
系統函數 (Transact-SQL)
ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)